Retrofit注解學(xué)習(xí)

retrofit的注解一共3種類(lèi)型,分別為網(wǎng)絡(luò)請(qǐng)求方法注解,標(biāo)記類(lèi)注解和網(wǎng)絡(luò)請(qǐng)求參數(shù)注解

  • 網(wǎng)絡(luò)請(qǐng)求方法注解
    • @GET
    • @POST
    • @PUT
    • @DELETE
    • @PATCH
    • @HEAD
    • @OPTIONS
    • @HTTP
  • 標(biāo)記類(lèi)注解
    • @FormUrlEncoded
    • @Multipart
    • @Streaming
  • 網(wǎng)絡(luò)請(qǐng)求參數(shù)注解
    • @Header
    • @headers
    • @URL
    • @Body
    • @Path
    • @Field
    • @FieldMap
    • @Part
    • @PartMap
    • @Query
    • @QueryMap

詳細(xì)解釋

  • 網(wǎng)絡(luò)請(qǐng)求方法注解即對(duì)應(yīng)了對(duì)應(yīng)的網(wǎng)絡(luò)請(qǐng)求方法

例如

@POST("GetWorkArea")
Observable<BaseResult<ArrayList<PDIC>>> GetWorkArea();

tips: retrofit的url分為2部分配置 一部分是我們這里的請(qǐng)求方法注解內(nèi)容GetWorkArea
還有一部分在構(gòu)建retrofit的地方

 Retrofit retrofit = new Retrofit.Builder()
                .client(client)
                .baseUrl(baseUrl)
                .addConverterFactory(ScalarsConverterFactory.create())//請(qǐng)求結(jié)果轉(zhuǎn)換為基本類(lèi)型淑廊,一般為String
                .addConverterFactory(GsonConverterFactory.create())//請(qǐng)求的結(jié)果轉(zhuǎn)為實(shí)體類(lèi)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())//適配RxJava2.0,
                .build();

這里的baseurl以及注解請(qǐng)求方法里的url組成請(qǐng)求的url,這里的請(qǐng)求規(guī)則如下

  1. path是一個(gè)完整的url,則設(shè)置baseurl的時(shí)候不設(shè)置,請(qǐng)求的url就是path
  2. path是絕對(duì)路徑,如 path="/GetWorkArea" 那么請(qǐng)求的url為baseurl的host地址+/path,例如baseurl為 http://www.testhost.com/a/b/c/d ,組合出來(lái)的url為 http://www.testhost.com/GetWorkArea
  3. path為相對(duì)路徑,如path="GetWorkArea" 如baseurl為 http://www.testhost.com/a/b/c/d/,組合出來(lái)的路徑為http://www.testhost.com/a/b/c/d/GetWorkArea
  4. path為相對(duì)路徑,baseurl為文件形式,例如baseurl為http://www.testhost.com/a/b.png,path為"c.png"組合出來(lái)為http://www.testhost.com/a/c.png

一般使用第三種方式...

@HTTP()是一個(gè)例外 ,可以代替其他的注解使用方式如下
@HTTP(method = "GET", path = "blog/{id}", hasBody = false)

  • 標(biāo)記類(lèi)

    • @FormUrlEncoded 作用:表示發(fā)送form-encoded的數(shù)據(jù)(每個(gè)鍵值對(duì)需要用@Filed來(lái)注解鍵名,隨后的對(duì)象需要提供值)
    • @Multipart 作用:表示發(fā)送form-encoded的數(shù)據(jù)(適用于 有文件 上傳的場(chǎng)景) (每個(gè)鍵值對(duì)需要用@Part來(lái)注解鍵名特咆,隨后的對(duì)象需要提供值季惩。 )
    • @Streaming 表示請(qǐng)求的數(shù)據(jù)以流的形式返回(使用于數(shù)據(jù)較大,如果沒(méi)有該注解,數(shù)據(jù)會(huì)全部加載到內(nèi)存,之后取數(shù)據(jù)也是從內(nèi)存中取)
  • 網(wǎng)絡(luò)請(qǐng)求參數(shù)

    • @Header&@Headers 添加請(qǐng)求頭 &添加不固定的請(qǐng)求頭
        // @Header
        @GET("user")
        Call<User> getUser(@Header("Authorization") String authorization)
        
        // @Headers
        @Headers("Authorization: authorization")
        @GET("user")
        Call<User> getUser()
    
    • @Body
      作用:以 Post方式 傳遞 自定義數(shù)據(jù)類(lèi)型 給服務(wù)器(如果提交的是一個(gè)Map,那么作用相當(dāng)于 @Field )
    • @Field & @FieldMap 發(fā)送 Post請(qǐng)求 時(shí)提交請(qǐng)求的表單字段(必須要和@FormUrlEncoded配合使用)
    • @Part & @PartMap, 與@Field的區(qū)別:功能相同腻格,但攜帶的參數(shù)類(lèi)型更加豐富画拾,包括數(shù)據(jù)流,所以適用于 有文件上傳 的場(chǎng)景(與 @Multipart配合做上傳等)
    • @Query和@QueryMap ,作用:用于 @GET 方法的查詢(xún)參數(shù)(Query = Url 中 ‘?’ 后面的 key-value)會(huì)拼接到url上
    • @Path 使用url中的缺省值,例如
     @GET("users/{user}/repos")
        Call<ResponseBody>  getBlog(@Path("user") String user );
    

    相當(dāng)于是補(bǔ)足url

    • @Url 當(dāng)有@url的時(shí)候 @get的參數(shù)就可以省略
    @GET
    Observable<TestBean> testAction(@Url String url);
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末菜职,一起剝皮案震驚了整個(gè)濱河市青抛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌些楣,老刑警劉巖脂凶,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宪睹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蚕钦,警方通過(guò)查閱死者的電腦和手機(jī)亭病,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嘶居,“玉大人罪帖,你說(shuō)我怎么就攤上這事∮势ǎ” “怎么了整袁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)佑吝。 經(jīng)常有香客問(wèn)我坐昙,道長(zhǎng),這世上最難降的妖魔是什么芋忿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任炸客,我火速辦了婚禮,結(jié)果婚禮上戈钢,老公的妹妹穿的比我還像新娘痹仙。我一直安慰自己,他們只是感情好殉了,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布开仰。 她就那樣靜靜地躺著,像睡著了一般薪铜。 火紅的嫁衣襯著肌膚如雪众弓。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天痕囱,我揣著相機(jī)與錄音田轧,去河邊找鬼暴匠。 笑死鞍恢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的每窖。 我是一名探鬼主播帮掉,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼窒典!你這毒婦竟也來(lái)了蟆炊?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瀑志,失蹤者是張志新(化名)和其女友劉穎涩搓,沒(méi)想到半個(gè)月后污秆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昧甘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年良拼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片充边。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庸推,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浇冰,到底是詐尸還是另有隱情贬媒,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布肘习,位于F島的核電站际乘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏漂佩。R本人自食惡果不足惜蚓庭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仅仆。 院中可真熱鬧器赞,春花似錦、人聲如沸墓拜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)咳榜。三九已至夏醉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涌韩,已是汗流浹背畔柔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留臣樱,地道東北人靶擦。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像雇毫,于是被迫代替她去往敵國(guó)和親玄捕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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