컴퓨터공부/Android

Retrofit으로 REST API 사용하기

achivenKakao 2017. 12. 18. 01:26

지난 글은 라이브러리 사용하지 않고, REST API를 사용하는 것을 해보았다면, 

이제는 Retrofit이라는 라이브러리를 통해서 REST API를 사용하는 것을 해보겠다.


목표 : Retrofit으로 REST API를 사용해보자.


작업 순서

1. 받을 response를 바탕으로 Contributor을 먼저 만들고

2. Retrofit을 통해서 통신할 interface 모듈을 만들고

3. Retrofit 인스턴스를 생성해서 사용한다.



별도 HTTP를 통신을 할 필요 없고, 파싱도 알아서 해준다. 거기다 속도도 더 빠르다. 짱임...


Retrofit_API.zip




 

public class Contributor {
private String login;

public String getLogin() {
return login;
}

public void setLogin(String login) {
this.login = login;
}
}



 public interface GitHub {


// GET /POST/ DELETE/ PUT 메소드들을 인터페이스에 구현하여 사용할 수 있다
@GET("/repos/{owner}/{repo}/contributors")
// JSON ARRAY를 리턴하므로 List<>가 되어야한다
Call<List<Contributor>> contributors(
@Path("owner") String owner,
@Path("repo") String repo);

}



 

public class MainActivity extends AppCompatActivity {

private Retrofit retrofit;
private TextView tv;

private final String BASE_URL = "https://api.github.com";


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initRetrofit();
tv = (TextView)findViewById(R.id.tv_response);

// GitHub API 인터페이스 생성
GitHub github = retrofit.create(GitHub.class);
// 인터페이스에 구현한 메소드인 Contributors에 param값을 넘기는 요청 만듦
Call<List<Contributor>> call = github.contributors("square", "retrofit");

call.enqueue(new Callback<List<Contributor>>() {

// 성공시
@Override
public void onResponse(Call<List<Contributor>> call, Response<List<Contributor>> response) {
List<Contributor> contributors = response.body();

// 받아온 리스트를 출력
for(Contributor cont : contributors){
tv.append(cont.getLogin() + "\n");
}
}

//실패시
@Override
public void onFailure(Call<List<Contributor>> call, Throwable t) {
Toast.makeText(MainActivity.this,"정보받기 실패", Toast.LENGTH_LONG).show();

}
});
}

private void initRetrofit() {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
}




참고 :

http://jizard.tistory.com/104

http://flymogi.tistory.com/entry/Retrofit%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EC%9E%90-v202

http://bcho.tistory.com/953?category=252770

http://gun0912.tistory.com/30