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
반응형
'개발중 > Spring' 카테고리의 다른 글
[Spring] 스프링 생성자 주입 방법 3가지 (1) | 2023.01.20 |
---|---|
JWT 인증과 Session 인증의 차이 (2) | 2023.01.18 |
[Spring] framework 와 Spring 에 대해서 알아보기 (3) | 2022.12.30 |
[Spring] 단일책임원칙을 지키고 있나요 (0) | 2022.12.16 |
intellij jdk 설정하는 방법 기록하기 ✍ (0) | 2022.12.04 |