반응형
Notice
Recent Posts
Recent Comments
Link
NOW OR NEVER
[Android] Retrofit 본문
반응형
Retrofit
- RESTful API를 쉽게 사용할 수 있도록 도와주는 라이브러리
- Retrofit 객체 생성(build) 방법
val retrofit = Retrofit.Builder()
.baseUrl("API URL")
// JSON을 객체로 변환하기 위해 Gson 컨버터 추가
.addConverterFactory(GsonConverterFactory.create())
// Retrofit 객체 생성
.build()
Annotation
- api 호출하는 것을 Retrofit 어노테이션을 이용하여 interface로 만들어 사용하면 더 간편하게 호출할 수 있다.
- @GET, @POST, @PUT, @DELETE, @PATCH
- HTTP 요청 메서드(GET, POST, PUT, DELETE, PATCH)를 정의할 때 사용
- ex) @GET("API 요청 URL/뒤에 나오는 것들")
- @Url
- 직접적으로 URL을 지정하고자 할 때 사용
- @GET, @POST 등의 어노테이션과 함께 사용하여 URL을 동적으로 지정 가능
- @Query
- 쿼리 파라미터를 정의할 때 사용
- @GET과 함께 사용 ex) @GET("/users") fun getUsers(@Query("page") page: Int)
- @Path
- 경로 변수를 정의할 때 사용됩니다.
- @GET, @POST 등의 어노테이션과 함께 사용하여 경로 변수를 동적으로 지정 가능
@GET("user/{id}")
fun getUser(@Path("id") userId: String): Call<User>
- @Field, @FieldMap
- @FormUrlEncoded와 함께 사용되며, 폼 데이터를 보낼 때 사용
- @FormUrlEncoded
- form 데이터를 서버로 전송하기 위해 요청 본문을 URL 인코딩하는 데 사용
- HTML form 데이터와 유사한 방식으로 서버에 데이터를 전송할 때 사용
- 주로 @POST 요청과 함께 사용
- 요청 본문에 키-값 쌍으로 데이터를 보낼 때 사용
- 요청 본문이 "application/x-www-form-urlencoded" 형식으로 인코딩되어 서버로 전송
- @Body
- 요청 본문을 지정할 때 사용
- 객체를 직렬화하여 요청에 포함시킬 때 유용
- @Header, @Headers
- 요청 또는 응답 헤더를 정의할 때 사용
- @Header는 단일 헤더 정의
- @Headers는 여러 헤더를 정의
- @Multipart, @Part, @PartMap
- 멀티파트 요청을 정의할 때 사용
- 파일 업로드 등에 사용
method
- Call
- 비동기적인 HTTP 요청을 수행하고 응답을 받기 위해 사용
- Retrofit 인터페이스에서 메서드는 보통 서버의 API 엔드포인트와 연결되며, 해당 메서드들은 Call 객체를 반환한다. 반환된 Call객체를 통해 비동기적인 HTTP 요청을 수행한다.
- Call 객체는 enqueue() 메서드를 호출하여 요청을 백그라운드에서 비동기적으로 실행 가능
- 응답이 도착하면 onResponse 콜백이 호출되며, 응답 데이터를 처리 가능
- 네트워크 오류 등으로 인해 요청이 실패하면 onFailure 콜백이 호출
etc
- header
- 헤더는 HTTP 통신에서 중요한 역할을 하며, API 호출 등에서 클라이언트와 서버 간의 정보 교환에 사용
- HTTP 요청의 헤더에는 클라이언트가 서버에 전달하는 정보 포함
- HTTP 응답의 헤더에는 서버가 클라이언트에 전달하는 정보 포함
'Android' 카테고리의 다른 글
[Android] MVVM 구조 (0) | 2023.08.02 |
---|---|
[Android] FireBase 기본 설정 & CRUD (0) | 2023.07.31 |
[Android] Image view에 등록된 사진이 안보이는 Error (0) | 2023.07.27 |
[Android] ViewPager2 Fragment 안보이는 Error (0) | 2023.07.27 |
[Android] SQLite 외부 DB파일 이용해서 안드로이드 내 DB로 사용하기 (0) | 2023.07.26 |