Retrofit이란?
Retrofit은 주로 RESTful API와 통신하기 위한 라이브러리이므로, 해당 API가 RESTful 규칙을 따른다면 Retrofit을 사용하여 통신할 수 있다.
때문에 서버를 구성한 언어와 상관없이 Retrofit을 이용해 통신할 수 있다.
간단히 말하자면 Retrofit는 서버와 클라이언트 간 http 통신을 위한 라이브러리이다.
예전에도 통신을 편하게 할 수 있도록 도와주는 라이브러리가 있었다.
HttpClient, Volley, OKhttp... 하지만 앞서 말한 2개는 Deprecated 되어 역사 속으로 사라졌고, OKhttp를 이용해서 더 편하고 사용하기 쉽게 만든 것이 Retrofit이다.
OKhttp를 기반으로 Retrofit을 만들었기 때문에 Retrofit 라이브러리를 추가하면 OKhttp의 메서드도 사용할 수 있다.
Retrofit 활용 방법
Retrofit을 사용하여 통신할 때는 주로 JSON 형식의 데이터를 주고받습니다.
1.데이터 모델 정의: 통신할 데이터의 구조를 나타내는 자바 클래스를 정의합니다. 이 클래스는 서버에서 주고받는 JSON 데이터와 일치해야 합니다.
public class Post {
private int id;
private String title;
private String body;
// Getters and setters
}
2.API 인터페이스 정의: 서버의 엔드포인트와 요청 메서드를 정의하는 Retrofit 인터페이스를 작성합니다.
public interface ApiService {
@GET("posts/{id}")
Call<Post> getPost(@Path("id") int postId);
}
3.Retrofit 객체 생성: Retrofit 객체를 생성하고 서버의 기본 URL을 설정합니다.
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService service = retrofit.create(ApiService.class);
4.요청 보내기: 정의한 API 인터페이스를 사용하여 서버에 요청을 보냅니다.
Call<Post> call = service.getPost(1);
call.enqueue(new Callback<Post>() {
@Override
public void onResponse(Call<Post> call, Response<Post> response) {
if (response.isSuccessful()) {
Post post = response.body();
// 데이터 처리
}
}
@Override
public void onFailure(Call<Post> call, Throwable t) {
// 실패 처리
}
});
이렇게 Retrofit을 사용하면 서버와 통신하기 위한 데이터 형태를 정의하고, 해당 데이터를 서버로부터 받아올 수 있습니다. Retrofit은 주로 JSON 형식의 데이터를 사용하며, Gson이나 Moshi와 같은 라이브러리를 통해 JSON 데이터를 자바 객체로 변환하고 반대로 변환할 수 있습니다.
다른 데이터 형태는 html이있다.
보내는 요청의 형태도 여러 가지가 있다.
GET, POST, PUT, DELETE 총 4가지가 있다.
만약 Request Method가
GET으로 되어있다면 우리는 GET 요청을 해야만 응답을 받을 수 있고
POST로 되어있다면 POST 요청을 해야만 응답을 받을 수 있다.
즉 사이트에서 정해놓은 방법대로 요청을 해야 한다는 것이다.