POST (Create)

: 서버에 데이터를 생성하는 메서드(Method)

정보를 받아온다 : GET 정보를 보낸다 : POST

@GET : 데이터를 모두 URL에 담아서 요청하는 방식 @POST : 데이터를 @BODY에 담아서 요청하는 방식 @BODY : 서버에 데이터 추가

java package → api package에 인터페이스, object(싱글톤) 생성 java package → model package에 data class 만들기

#1. data class 만들기 (DTO 클래스)

//보내는 정보 
data class PostModel(
    @SerializedName("id")
    val id: Int? = null,
    @SerializedName("name")
    val password: String? = null
)

//받는 결과물
data class PostResult(
    var result:String?
)

#2. 인터페이스 설계

: @POST, @GET이 들어가는 부분

POST는 BODY 사용 GET은 Path, Quary 사용

  1. @Body

I ⚠️”No type arguments expected for class Call” : import가 android.telecom.Call 이 아닌 retrofit2.Call 이다.

interface APIS {
    @Headers("accept: application/json", "content-type: application/json")
    @POST("api/hello")
    fun postUsers(
        @Body postUser:PostModel  //어떤 정보를 보내는지! data class에서 만들었다.
    ):Call<PostResult>  //어떤 정보를 받는지! data class에서 만들었다. 
}
  1. @Field

: 인자를 form-urlencoded 방식으로 전송

@FormUrlEncoded 애노테이션 추가 필수

object RetrofitAPI {
    private const val BASE_URL = "<http://35.216.10.67:8080/>"
		
		//retrofit 생성 
    private val retrofit: Retrofit by lazy{
        Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build()
    }

		//인터페이스에 retrofit 연결
    val post: APIS by lazy{
        retrofit.create(APIS::class.java)
    }
}