[Android] Retrofit2
2021. 7. 16. 09:50ㆍ개발/[Android]
Retrofit이란?
Retrofit은 API를 Java인터페이스로 변환하여 Rect 웹 서비스에 쉽게 연결 할 수 있게 하는 라이브러리이다. JSON 또는 XML데이터를 쉽게 처리 할 수 있으며 GET, POST, PUT, PATCH , DELETE 같은 Request를 모두 실행 할 수 있게 만든다. 또한 Retrofit은 네트워크 Request를 처리하기 위해서 OKHttp를 사용하며 Gson, Jackson과 같은 JSON변환기 라이브러리에 대한 지원도 제공한다.
Annotation 종류
- Interface에서 Method 위에
@GET
@POST
@PUT
@PATCH
@DELETE
- Method의 매개변수에서 ..
@Path API 엔드포인트의 변수를 대채
@Query 어노테이션의 매개변수 값으로 쿼리 키 이름을 지정
@Body Post 호출의 페이로드
@Header 어노테이션의 매개변수 값으로 헤더를 지정
사용방법
Dependency 선언
// Retrofit compile 'com.squareup.retrofit2:retrofit:2.1.0' // JSON Parsing compile 'com.google.code.gson:gson:2.6.1' compile 'com.squareup.retrofit2:converter-gson:2.1.0'
Internet 권한 추가
// in (AndroidManifast.xml) <uses-permission android:name="android.permission.INTERNET" />
모델 생성
public class JsonResult<T> { public boolean success; public T bean; public List<Error> errors; ... }
Retrofit 생성 ( Singleton )
public class RetrofitInit { private static Retrofit retrofit; public static Retrofit getRetrofit(){ if( retrofit == null ) { Retrofit.Builder builder = new Retrofit.Builder(); builder.baseUrl( ... ); builder.addConverterFactory( GsonConverterFactory.create() ); // 받아오는 Json 구조의 데이터를 객체 형태로 변환 retrofit = builder.build(); } return retrofit; } }
Retrofit 인터페이스 생성
public interface UserInterface { @FormUrlEncoded @POST("member/join") Call<JsonResult<Empty>> join(@FieldMap HashMap<String, Object> parameters); }
Retrofit 호출
userService.join(hashMap, new RetroCallback<JsonResult<Empty>>() {
@Override
public void onError(Throwable t) {
makeToast(t.toString());
}
@Override
public void onSuccess(int code, JsonResult<Empty> receivedData) {
if(receivedData.success){
makeToast("성공");
}else{
for(int i=0; i<receivedData.errors.size(); i++){
Log.d("userService.join > F",receivedData.errors.get(i).message);
}
}
}
@Override
public void onFailure(int code, JsonResult<Empty> receivedData) {
for(int i=0; i<receivedData.errors.size(); i++){
makeToast(receivedData.errors.get(i).message);
}
}
});
'개발 > [Android]' 카테고리의 다른 글
[Android] Android Architecture (0) | 2021.06.11 |
---|---|
[Android] Dalvik & ART (0) | 2021.06.08 |