원글 링크 - http://gun0912.tistory.com/30
Retrofit 라이브러리는 제가 사랑하는 Square라는 회사에서 만든 REST API통신을 위한 Android/JAVA 라이브러리 입니다.
유틸리티 어플리케이션이 아닌 좀더 큰 범위의 서비스를 사용한다면 클라이언트 <-> 서버 통신은 빼놓을수 없이 구현해야 할것입니다.
그만큼 안드로이드 어플리케이션에서는 서버와의 통신이 많을것이고 이를 잘 다루어야 합니다.
AsyncTask,HttpUrlConnection을 사용해서 직접 네트워크 통신을 구현하려면 여러가지 귀찮은 작업들이 많습니다.
1. 네트워크 통신 연결/해제
2. 가져온 데이터 파싱
3. Json통신의 경우, Json데이터<-> Class 변환
4. 각종 에러처리
API통신을 이용하는 서비스에서 정말 편하게 사용할 수 있는 Retrofit을 소개해드립니다.
사용 예시
GitHub에서 특정 사용자의 repository 목록을 가져오는 통신이 있다고 가정해보겠습니다.
API주소는 'http://api.github.com/users/사용자 ID/repos' 입니다.
만약 사용자 ID에 ParkSangGwon를 넣을경우 아래와 같은 리턴 Json값을 받아볼 수 있습니다.
[
{
"id": 35079604,
"name": "DLog",
"full_name": "ParkSangGwon/DLog",
"owner": {... },
"private": false,
...
},
{
"id": 35081014,
"name": "ObjectUtils",
"full_name": "ParkSangGwon/ObjectUtils",
"owner": {...},
"private": false,
...
},
{
"id": 35081259,
"name": "UpdateCheck",
"full_name": "ParkSangGwon/UpdateCheck",
"owner": {...},
"private": false,
...
}
]
Retrofit을 사용하는 경우 통신방식에 대해 알아보겠습니다.
1. Interface Class 선언하기
user를 파라미터로 받아 API URL을 완성해서 GET방식으로 요청할 것입니다.
public interface GitHubService {
@GET("/users/{user}/repos")
List<Repo> listRepos(@Path("user") String user);
}
2. Interface Class 구현하기
Retrofit에서 제공하는 restAdapter를 이용해서 Base URL(https://api.github.com)을 지정해주고 GitHubService 변수를 만들어 줍니다.
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.build();
GitHubService service = restAdapter.create(GitHubService.class);
3. Repo클래스 만들기
앞서 예시에서 호출했을때 나온 json을 받아줄 클래스를 생성해줍니다.
json의 키에 해당하는 값들을 변수 이름으로 지정해주면 됩니다.
public class Repo {
int id;
String name;
String full_name;
...
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFull_name() {
return full_name;
}
public void setFull_name(String full_name) {
this.full_name = full_name;
}
}
4. 서비스 호출해서 리스트 가져오기
1번에서 선언한 함수를 사용하면 3번의 Repo클래스들의 리스트형태를 결과로 받아 볼수 있습니다.
List<Repo> repos = service.listRepos("ParkSangGwon");
물론 GET방식 이외에도 POST,PUT,DELETE,HEAD등의 다양한 Request방식을 지원합니다.
GET방식의 경우 위의 예제방식 이외에도 Query방식으로도 호출할수 있습니다.
Retrofit에서 사용할수있는 모든 방식은 공식홈페이지에서 확인해 보실 수 있습니다.
'공부하는 하스씨 > 안드로이드' 카테고리의 다른 글
[펌] Android의 HTTP 클라이언트 라이브러리 (0) | 2015.09.11 |
---|---|
[펌] Retrofit - 쉽고 빠른 Android HTTP REST 인터페이스 라이브러리 (0) | 2015.09.11 |
[펌] 모든 안드로이드 개발자가 알아야할 5대 안드로이드 라이브러리. (0) | 2015.09.11 |
안드로이드용 그래프, 차트 그리기 라이브러리들. (0) | 2015.07.29 |
마침표(.) 로 split 하기. (1) | 2015.07.16 |