일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 키스토어
- #안드로이드
- 제플린
- 안드로이드 익명클래스
- 안드로이드
- #안드로이드 개발자 #안드로이드 신입 #개발자 이직 #안드로이드 면접 #신입 개발자
- #리사이클러뷰 어댑터
- retrofit2
- 클린아키텍쳐
- #android #안드로이드 #glide #gif #이미지다운로드
- #SMS API #안드로이드 SMS #SMS Retriever
- 안드로이드해상도
- MVVM
- retrofi
- 사용법
- 레트로핏
- 빗버킷 #bitbucket #authorization failed #깃
- 리사이클러뷰 체크박스
- 안드로이드 아키텍쳐
- zeplin
- 구글맵안돼요
- 안드로이드 메모리릭
- #리사이클러뷰
- #ContentProvider #App DataShare
- retrofit
- 메모리릭
Archives
- Today
- Total
땀이 삐질삐질 나는 개발 일기
[레트로핏]Retrofit2 @Field 와 @Body 차이 Feat.DTO 본문
안녕하세요. 삐질삐질 개발하는 개발자 삐질입니다.
오늘은 Retrofit의 어노테이션들 중 @Field와 @Body 에 대해 알아보려고 합니다
@Field
인자를 form-urlencoded 으로 보낼때 사용해요 .
여기서 form-urlencoded는 key=value&key=value 와 같은 형태로 데이터를 전달하는 것을 말합니다.
또한 레트로핏에서 @Field는 @FormUrlEncoded 이녀석과 같이 쓰입니다.
@FormUrlEncoded
@POST("api/setAdUser")
Call<Result> setAdUserApi(@Field("params") String params);
@Body
서버에서는 유일한 매개 변수로 받고, 클라이언트에서 Java Object를 통째로 직렬화 해서 보낼때 사용해요.
Java Object를 직렬화해서 보낼 수 있는것은, Retrofit이 Gson 컨버터와 함께 쓰이기 때문이에요.
@POST("api/setAdUser")
Call<Result> setAdUserApi(@Body JsonObject jsonObject);
DTO ( Data transfer object )
* 데이터를 담아두는 그릇 클래스 입니다. 유사하게 POJO, Entity, DTO 여러가지 용어들로 불리기도 하는데 정확히 이때는 DTO가 맞습니다.
* @Body 를 사용하면, 현재의 Member Instance가 직렬화 된 String값으로 서버에 전달이 됩니다.
* DTO를 사용하면 귀찮게 JsonObject에 담고 KeyValue쌍으로 파싱을 할 필요 없으니 참고해두면 좋습니다.
public class Result {
@SerializedName("request")
private JsonObject request;
@SerializedName("response")
private JsonObject response;
public JsonObject getRequest() {
return request;
}
public void setRequest(JsonObject request) {
this.request = request;
}
public JsonObject getResponse() {
return response;
}
public void setResponse(JsonObject response) {
this.response = response;
}
}
* Call<Result> 의 Result는 제가 따로 정의한 DTO이니까 이 부분은 그대로 따라하시면 에러를 만날 수 있습니다.
* 제네릭 DTO는 각자 상황에 맞춰서 CustomDto 또는 ResponseBody등을 사용하시면 됩니다.
'개발 Tip' 카테고리의 다른 글
Android EditText 상황에 따라 키보드 컨트롤 (0) | 2019.05.27 |
---|---|
Android,Java의 this는 언제, 어떻게 쓰일까? (0) | 2019.05.21 |
BaseActivity로 액티비티, 프래그먼트 전환 메서드 재사용 하기 (0) | 2019.05.17 |
다른 앱과 Data Share하는 방법 Feat. ContentProvider (0) | 2019.05.17 |
여러개의 EditText의 String 값을 깔끔하게 Null & Empty 검사하는 방법 (0) | 2019.05.16 |
Comments