@Path
是网址中的动态参数,例如:userinfo/{phone}
//get请求(URL携带参数) @GET("userinfo/{phone}") Call<UserInfo> getItem(@Path("phone") String phone);
@Query
是URL问号后面的参数,例如:trades/{userId}?token={token}
@QueryMap
相当于多个@Query
@GET("/login/validate") Observable<BaseModel<ValidateModel>> verifyCode(@Query("phone") String phone, @Query("verificationCode") String code); //构建key-value的键值对来一起提交query @GET("/login/validate") Observable<BaseModel<ValidateModel>> verifyCode2(@@QueryMap Map<String, String> map);
@Field
用于Post请求,提交单个数据,然后要加@FormUrlEncoded
@Body
相当于多个@Field
,以对象的方式提交@FormUrlEncoded @PUT("/user/updateHeadPrtrait/") Observable<BaseModel> updateHeadPrtrait(@Field("phone") String phone, @Field("headpPrtrait") String headpPrtrait); @POST("/user/updateUserInfo") Observable<BaseModel> updatePersonInfo(@Body RequestBody body);
@Streaming
:用于下载大文件
@Header
、@Headers
,加请求头;
两者区别是使用方式不一样,@Header
是作为请求方法的参数传入,@Headers
是以固定方式直接添加到请求方法上@GET("userinfo/13854389438") Observable<BaseModel> getInfo(@Header("Authorization") String authorization, @Header("Content-Type") String contentType) @Headers({ "Authorization:M2I0OTU4OTQ3NjY0MDNmNzRmNmUwN2Qw", "Content-Type:application/json; charset=UTF-8" }) @GET("userinfo/13854389438") Observable<BaseModel> getInfo2();