【Retrofit】網(wǎng)絡請求參數(shù)@Path、@Query杀捻、@QueryMap井厌、@Body、@Field、@FieldMap用法

最近開始在項目中使用Retrofit仅仆,在這里總結一下Retrofit網(wǎng)絡請求參數(shù)@Path器赞、@Query、@QueryMap墓拜、@Body港柜、@Field、@FieldMap用法

初始化Retrofit

Retrofit retrofit =newRetrofit.Builder()

.baseUrl("https://fanyi-api.baidu.com/")

.addConverterFactory(GsonConverterFactory.create())

.build();

GET

樣式1(一個簡單的get請求)

http://192.168.1.1/api/News

@GET("News")

Call ?getItem();

樣式2(URL中有參數(shù))

http://192.168.1.1/api/News/1

http://192.168.1.1/api/News/{資訊id}

@GET("News/{newsId}")

Call?getItem(@Path("newsId")String newsId);


http://192.168.1.1/api/News/1/類型1

http://192.168.1.1/api/News/{資訊id}/{類型}

@GET("News/{newsId}/{type}")

Call?getItem(@Path("newsId")String newsId咳榜, @Path("type")String type);

樣式3(參數(shù)在URL問號之后)

http://192.168.1.1/api/News?newsId=1

http://192.168.1.1/api/News?newsId={資訊id}

@GET("News")

Call?getItem(@Query("newsId") String newsId);

http://192.168.1.1/api/News?newsId=1&type=類型1

http://192.168.1.1/api/News?newsId={資訊id}&type={類型}

@GET("News")

Call?getItem(@Query("newsId") String newsId夏醉, @Query("type") String type);

樣式4(多個參數(shù)在URL問號之后,且個數(shù)不確定)

http://192.168.1.1/api/News?newsId=1&type=類型1...

http://192.168.1.1/api/News?newsId={資訊id}&type={類型}...

@GET("News")

Call?getItem(@QueryMap Map map);

也可以

@GET("News")

Call?getItem(@Query("newsId")String newsId涌韩,@QueryMap Map map);

POST

樣式1(需要補全URL畔柔,post的數(shù)據(jù)只有一條reason)

http://192.168.1.1/api/Comments/1

http://192.168.1.1/api/Comments/{newsId}

@FormUrlEncoded

@POST("Comments/{newsId}")

Call?reportComment(@Path("newsId") String commentId,@Field("reason") String reason);

樣式2(需要補全URL,問號后加入access_token臣樱,post的數(shù)據(jù)只有一條reason)

http://192.168.1.1/api/Comments/1?access_token=1234123

http://192.168.1.1/api/Comments/{newsId}?access_token={access_token}

@FormUrlEncoded

@POST("Comments/{newsId}")

Call?reportComment(@Path("newsId") String commentId,@Query("access_token") String access_token,@Field("reason") String reason);

樣式3(需要補全URL靶擦,問號后加入access_token,post一個body(對象))

http://192.168.1.1/api/Comments/1?access_token=1234123

http://192.168.1.1/api/Comments/{newsId}?access_token={access_token}

@POST("Comments/{newsId}")

Call?reportComment(@Path("newsId") String commentId, @Query("access_token") String access_token,@Body CommentBean bean);

DELETE

樣式1(需要補全URL)

http://192.168.1.1/api/Comments/1

http://192.168.1.1/api/Comments/{newsId}

{access_token}

@DELETE("Comments/{commentId}")

Call?deleteNewsCommentFromAccount(@Path("commentId") String commentId);

樣式2(需要補全URL雇毫,問號后加入access_token)

http://192.168.1.1/api/Comments/1?access_token=1234123

http://192.168.1.1/api/Comments/{newsId}?access_token={access_token}

@DELETE("Comments/{commentId}")

Call?deleteNewsCommentFromAccount(@Path("accountId")String accountId玄捕,? ? ? ? @Query("access_token")String access_token);

PUT(這個請求很少用到,例子就寫一個)

http://192.168.1.1/api/Accounts/1

http://192.168.1.1/api/Accounts/{accountId}

@PUT("Accounts/{accountId}")

Call?updateExtras(@Path("accountId")String accountId,? ? ? ? @Query("access_token")String access_token, @Body ExtrasBean bean);

總結

@Path:所有在網(wǎng)址中的參數(shù)(URL的問號前面)嘴拢,如:

http://192.168.1.1/api/Accounts/{accountId}

@Query:URL問號后面的參數(shù)桩盲,如:

http://192.168.1.1/api/Comments?access_token={access_token}

@QueryMap:相當于多個@Query

@Field:用于POST請求,提交單個數(shù)據(jù)

@FieldMap:以map形式提交多個Field(Retrofit2.0之后添加)

@Body:相當于多個@Field席吴,以對象的形式提交

TIps

Tip1

使用@Field時記得添加@FormUrlEncoded

Tip2

若需要重新定義接口地址,可以使用@Url捞蛋,將地址以參數(shù)的形式傳入即可孝冒。

Tip3

@Path 和@Query的區(qū)別

相同點:都是請求頭中的帶有的數(shù)據(jù)

不同點:前者是請求頭中問號之前用于替換URL中變量的字段,后者是請求頭問號之后用于查詢數(shù)據(jù)的字段拟杉,作用和應用場景都不同

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庄涡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子搬设,更是在濱河造成了極大的恐慌穴店,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拿穴,死亡現(xiàn)場離奇詭異泣洞,居然都是意外死亡,警方通過查閱死者的電腦和手機默色,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門球凰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事呕诉≡迪幔” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵甩挫,是天一觀的道長贴硫。 經(jīng)常有香客問我,道長伊者,這世上最難降的妖魔是什么英遭? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮删壮,結果婚禮上贪绘,老公的妹妹穿的比我還像新娘。我一直安慰自己央碟,他們只是感情好税灌,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亿虽,像睡著了一般菱涤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洛勉,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天粘秆,我揣著相機與錄音,去河邊找鬼收毫。 笑死攻走,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的此再。 我是一名探鬼主播昔搂,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼输拇!你這毒婦竟也來了摘符?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤策吠,失蹤者是張志新(化名)和其女友劉穎逛裤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猴抹,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡带族,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了洽糟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炉菲。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡堕战,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拍霜,到底是詐尸還是另有隱情嘱丢,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布祠饺,位于F島的核電站越驻,受9級特大地震影響,放射性物質發(fā)生泄漏道偷。R本人自食惡果不足惜缀旁,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望勺鸦。 院中可真熱鬧并巍,春花似錦、人聲如沸换途。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽军拟。三九已至剃执,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間懈息,已是汗流浹背肾档。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辫继,地道東北人怒见。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像姑宽,于是被迫代替她去往敵國和親速种。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容