@Field 형식 : 인자를 form-urlencoded(key-vlaue) 으로 보낼때 사용한다.
@FormUrlEncoded 와 함께 쓰인다.
POST 요청 보낼때만 사용 가능하다.@FormUrlEncoded @POST("/baseURL 이후 주소") suspend fun apiPostUser( @Field("name") name: String, @Field("password") password: String ): Response<JsonObject>
@Body 형식 : 서버에서는 유일한 매개 변수로 받고, 클라이언트에서 Java Object를 통째로 직렬화 해서 보낼때 사용한다.
객체를 Json형식으로 넘겨줄때 사용한다.@POST("/baseURL 이후 주소") suspend fun apiPostUser( @Body body: User ): Response<JsonObject> ㅤㅤ //body에 들어갈 User 객체 data class User( @SerializedName("name") val name: String, @SerializedName("password") val password: String )
@Query vs @Field
@Field는 파라미터가 url에 붙지 않아서 외부에 노출되지 않는다.
ex)http://어쩔저쩔/StatusUpdate
@Query는 파라미터가 url에 붙어서 외부에 노출된다.
ex) http://어쩔저쩔/StatusUpdate?Status=Ready
@Query vs Path
@Query
ex) http://어쩔저쩔/post?post_id=6
@Path - url에 "어쩌꾸/{id}" < 이렇게 적어줘야 path 파라미터가 여기 들어감
ex) http://어쩔저쩔//post/6
path
'https://domain/sub-url/460,1'
query
'https://domain/sub-url?id=460$id2=1'