改造:@Field和@Body之间有什么区别 [英] Retrofit: what is different between @Field and @Body
问题描述
在某些帖子请求中,我不知道何时使用@Field,何时使用@Body. 像之间有什么区别?
In some post request, I don't know when to use @Field, when to use @Body. Like whats the difference between:
@POST("users/register")
Call<String> register(@Body RequestBody registerRequest);
和:
@POST("users/register")
Call<String> register(@Field String id, @Field String pass);
我可以使用@Body代替@Field并反转吗?如果没有,为什么?以及如何知道这种情况下使用@Body,其他情况下使用@Field?
Can I use @Body instead of @Field, and reverse ? If not, why ? And how to know this case use @Body, other case use @Field ?
能给我一些案例并解释一下,谢谢.
Can you please give me some case and explain, thank you.
推荐答案
@Body
–将Java对象作为请求正文发送.
@Body
– Sends Java objects as request body.
@Field
–按表单编码发送数据.这需要方法附带的@FormUrlEncoded
批注.
@Field
参数仅适用于POST. @Field
需要必填参数.如果@Field
是可选的,我们可以改用@Query
并传递一个空值.
@Field
– send data as form-urlencoded. This requires a @FormUrlEncoded
annotation attached with the method.
The @Field
parameter works only with a POST. @Field
requires a mandatory parameter. In cases when @Field
is optional, we can use @Query
instead and pass a null value.
这篇关于改造:@Field和@Body之间有什么区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!