본문 바로가기

개발중/Spring

[SpringBoot] SpringBoot Retrofit

728x90
반응형

Retrofit 이 뭐야 ?

 

OKHttp 라이브러리를 기반으로 http 통신을 할 수 있게 도와주는 자바 라이브러리이다.
보통 안드로이드 또는 스프링 웹 어플리케이션 서버에서 외부 서버와 API 통신을 하기 위해 사용합니다.

 

JAVA에서 HTTP 통신을 하기위한 대표적인 라이브러리가 HttpUrlConnection 이다.

HttpUrlConnection의 단점


- 코드가 길어지며 가독성이 떨어진다.
- Json 으로 받은 객체를 일일이 Convert 해야한다.

 

 

HttpUrlConnection의 장점


- 가독성이 높아진다.
- Json 으로 받은 객체를 일일이 Convert 해야한다.

 

import java.util.List;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface PostsAPI {

    @GET("/posts/{userId}")
    Call<PostsResponseDto.Posts> getPosts(@Path("userId") Long userId);

    @GET("/posts")
    Call<List<PostsResponseDto.Posts>> getAllPosts(@Query("userId") Long userId);

    @POST("/posts")
    Call<PostsResponseDto.Create> createPosts(@Body PostsRequestDto.Create create);

    @FormUrlEncoded
    @POST("/posts")
    Call<PostsResponseDto.Create> createPostsByForm(
        @Field("userId") Long userId,
        @Field("title") String title,
        @Field("body") String body
    );
}

 

Retrofit은 요청할 API를 미리 인터페이스로 정의하며 Call 객체를 반환합니다.


1) @Path

Path 변수를 사용합니다.

2) @Query

QueryString을 사용합니다. (?userId=1)

3) @Body

@Body을 파라미터에 정의하면 파라미터 객체를 JSON으로 파싱하며, ContentType이 application/json으로 정의됩니다.

4) @FormUrlEncoded

@FormUrlEncoded 어노테이션을 정의하면, ContentType이 application/x-www-form-urlencoded으로 정의됩니다.

 

728x90
반응형