關(guān)于Retrofit網(wǎng)絡請求URL中含有可變參數(shù)的處理

一般我們使用Retrofit大部分場景中URL都是以注解的方式靜態(tài)聲明的空郊,即URL及path路徑都是固定不變,可變部分作為方法的參數(shù)傳入,那有一些特殊情況會要求我們再使用@GET()、或者@POST()的時候URL路徑里含有可變參數(shù),需要動態(tài)處理包竹,下面通過例子我逐個為大家分析講解。

  說明:以下所有Retrofit請求的BaseURL為https://192.168.1.101/api/籍凝,接口地址為本地測試周瞎,不代表以下接口真實可用

1.GET請求     

1.)普通get請求、
      https://192.168.1.101/api/MovieList

2.) url中含有參數(shù)

     https://192.168.1.101/api/MovieList/2018    

     分析:2018為動態(tài)可變部分饵蒂,代表指定idMovie声诸,api/MovieList/{movieId}

或者

  https://192.168.1.101/api/MovieList/2018/comedy    

  分析:請求指定年下類型為comedy的電影,可變部分為年份/類型   請求地址可變部分歸類為 api/{movieId}/{type}

3.)可變參數(shù)在URL的問號之后

  https://192.168.1.101/api/MovieList?movieId=10011

  分析:問號之后的參數(shù)可以直接用@Query注解在作為方法參數(shù)傳入

4.) 問號后面有多個參數(shù) :

  https://192.168.1.101/api/MovieList?movieId=10011&type=3

5.)問號后面有多個參數(shù)苹享,且參數(shù)個數(shù)不定

 https://192.168.1.101/api/MovieList?movieId=10011&type=4&year=2013&......

 分析:作為Get請求双絮,后面參數(shù)根據(jù)具體業(yè)務確定參數(shù)多少,也就是參數(shù)個數(shù)可變得问,但不確定多少個囤攀,可以借助@Querymap

2.POST請求

1.) url中含有可變參數(shù),post的數(shù)據(jù)只有一個type

    https://192.168.1.101/api/MovieList/2018

    分析:url中2018為可變內(nèi)容宫纬,post需要提交的參數(shù)只有一個type,2018可動態(tài)改變

2.) url中含有可變參數(shù)焚挠、問號之后需要加入token,post的數(shù)據(jù)只有一個type

  https://192.168.1.101/api/MovieList/2018?token=4654551321563132fasd5645ds3

3.) url中含有可變參數(shù)漓骚、問號之后需要加入token蝌衔,post的數(shù)據(jù)為一個對象(json串)

  https://192.168.1.101/api/MovieList/2018?token=4654551321563132fasd5645ds3

另外還有幾點

1.如果你的可變參數(shù)中是帶斜杠“/”的,比如

https://192.168.1.101/api/MovieList/session/token,

session和token都是可變參數(shù)蝌蹂,但session是已知的噩斟,只是可能不同的請求下要求變?yōu)椴煌淖侄危?/p>

https://192.168.1.101/api/MovieList/apiKey/token

而baseURL始終為

https://192.168.1.101/api/MovieList/

2.如果你需要用到delete請求孤个,比如

直接這樣用就會報錯java.lang.IllegalArgumentException:Non-body HTTP method cannot contain @Body

據(jù)說官網(wǎng)表示DELETE并不支持向服務器傳body

必須更換一下寫法:

@HTTP(method = "DELETE",path = "event/{uuid}",hasBody = true)
Observable<ResponseBody> delEvent(@Path(value = "uuid", encoded = true) String uuid, @Body RequestBody rb);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剃允,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子齐鲤,更是在濱河造成了極大的恐慌斥废,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件给郊,死亡現(xiàn)場離奇詭異牡肉,居然都是意外死亡,警方通過查閱死者的電腦和手機淆九,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門统锤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毛俏,“玉大人,你說我怎么就攤上這事饲窿∨《叮” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵免绿,是天一觀的道長。 經(jīng)常有香客問我擦盾,道長嘲驾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任迹卢,我火速辦了婚禮辽故,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腐碱。我一直安慰自己誊垢,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布症见。 她就那樣靜靜地躺著喂走,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谋作。 梳的紋絲不亂的頭發(fā)上芋肠,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機與錄音遵蚜,去河邊找鬼帖池。 笑死,一個胖子當著我的面吹牛吭净,可吹牛的內(nèi)容都是我干的睡汹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼寂殉,長吁一口氣:“原來是場噩夢啊……” “哼囚巴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起不撑,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤文兢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后焕檬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姆坚,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年实愚,在試婚紗的時候發(fā)現(xiàn)自己被綠了兼呵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兔辅。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖击喂,靈堂內(nèi)的尸體忽然破棺而出维苔,到底是詐尸還是另有隱情,我是刑警寧澤懂昂,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布介时,位于F島的核電站,受9級特大地震影響凌彬,放射性物質(zhì)發(fā)生泄漏沸柔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一铲敛、第九天 我趴在偏房一處隱蔽的房頂上張望褐澎。 院中可真熱鬧,春花似錦伐蒋、人聲如沸工三。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俭正。三九已至,卻和暖如春焙畔,著一層夾襖步出監(jiān)牢的瞬間段审,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工闹蒜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寺枉,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓绷落,卻偏偏與公主長得像姥闪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子砌烁,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

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