分类
Retrofit 共22个注解,根据功能大概分为三类:
- 请求方法类
- 标记类
- 参数类
请求方法类
序号 | 名称 |
---|---|
1 | GET |
2 | POST |
3 | PUT |
4 | DELETE |
5 | PATCH |
6 | HEAD |
7 | OPTIONS |
8 | HTTP |
序号 1 ~ 7
- 分别对应 HTTP 的请求方法;
- 接收一个字符串表示接口 path ,与 baseUrl 组成完整的 Url;
- 可以不指定,结合 @Url 注解使用;
- url 中可以使用变量,如 {id} ,并使用 @Path(“id”) 注解为 {id} 提供值。
举个栗子
public interface BlogService{
@GET("blog/{id}")
Call<ResponseBody> getBlog(@Path("id") int id);
}
序号 8
- 可用于替代以上 7 个,及其他扩展方法;
- 有 3 个属性:method、path、hasBody、 举个栗子
public interface BlogService{
/**
* Cmethod 请求方法,不区分大小写
* path 路径
* hasBody 是否有请求体
*/
@HTTP(method = "get", path = "blog/{id}", hasBody = false)
Call<ResponseBody> getBlog(@Path("id") int id);
}
标记类
分类 | 名称 | 备注 |
---|---|---|
表单请求 | FormUrlEncoded | 请求体是 From 表单 |
~~ | Multipart | 请求体是支持文件上传的 From 表单 |
标记 | Streaming | 响应体的数据用流的形式返回 |
FormUrlEncoded
登录页面使用:Content-Type:application/x-www-form-urlencoded
- 用于修饰Field注解和FieldMap注解
- 使用该注解,表示请求正文将使用表单网址编码。字段应该声明为参数,并用@Field注释或FieldMap注释。使用FormUrlEncoded注解的请求将具”application/ x-www-form-urlencoded”MIME类型。字段名称和值将先进行UTF-8进行编码,再根据RFC-3986进行URI编码.
Multipart
上传文件使用:Content-Type:multipart/form-data
//传单个文件
@Multipart
@POST("v1/create")
Call<ResponseBody> create(@Part("pictureName") RequestBody pictureName, @Part MultipartBody.Part picture
RequestBody pictureNameBody = RequestBody.create(MediaType.parse(AppConstants.CONTENT_TYPE_FILE), "pictureName");
File picture= new File(path);
RequestBody requestFile = RequestBody