NOW OR NEVER

[Android] Retrofit 본문

Android

[Android] Retrofit

LAURA 2023. 7. 27. 21:42
반응형

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 응답의 헤더에는 서버가 클라이언트에 전달하는 정보 포함
Comments