: 서버에 데이터를 생성하는 메서드(Method)
정보를 받아온다 : GET 정보를 보낸다 : POST
@GET : 데이터를 모두 URL에 담아서 요청하는 방식 @POST : 데이터를 @BODY에 담아서 요청하는 방식 @BODY : 서버에 데이터 추가
java package → api package에 인터페이스, object(싱글톤) 생성 java package → model package에 data class 만들기
//보내는 정보
data class PostModel(
@SerializedName("id")
val id: Int? = null,
@SerializedName("name")
val password: String? = null
)
//받는 결과물
data class PostResult(
var result:String?
)
: @POST, @GET이 들어가는 부분
POST는 BODY 사용 GET은 Path, Quary 사용
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에서 만들었다.
}
: 인자를 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)
}
}