✔ 요청방식(POST, DELETE, GET, PUT)
서버와의 요청방식에는 POST, DELETE, GET, PUT이 있으며 request를 통해 데이터를 보내고 response를 통해 받아온다.
GET과 같이 보낼 것은 없고 받아올 것만 있을 경우에는 request를 비워서 보낼 뿐 결국 같은 원리로 진행된다고 볼 수 있다.
build.gradle(:app)의 dependencies에 해당 내용을 입력한다
//build.gradle(:app)
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
baseUrl을 설정하는 페이지이며 이후 설정하는 RequestInterface를 호출하여 이용한다.
object RequestToServer {
var retrofit = Retrofit.Builder()
.baseUrl("http:baseurl을 여기에 입력")
.addConverterFactory(GsonConverterFactory.create())
.build()
var service: RequestInterface = retrofit.create(
RequestInterface::class.java)
}
각 api에 해당하는 상세 경로를 형식과 함께 붙여준다. 이때 서버 요청 함수를 선언하고 필요에 따라 원하는 요청형식과 응답형식을 넘겨준다.
interface RequestInterface{
@POST("/api/v1/members/login")
fun requestLogin(@Body body : RequestLogin) : Call<ResponseLogin>
}
로그인을 요청하기 위한 데이터 형식이다. 예시코드는 아이디와 비밀번호를 통해 로그인을 요청하는 방식이다.
data class RequestLogin(
var userId: String,
var password: String
)
로그인 요청에 따른 응답 형식으로 서버에서 주는 형식과 동일하게 설정해야 한다.
data class ResponseLogin(
val code : Int,
val success : Boolean,
val msg : String,
val data : SomeData?
)
data class SomeData(
val accessToken : String,
val refreshToken : String
)
activity에서 입력받은 로그인정보를 서버에 전달한다.
val requestToServer = RequestToServer
//버튼 눌렀을때 서버요청
binding.btnLogin.setOnClickListener(){
if (binding.loginEtId.text.isNullOrBlank() || binding.loginEtPw.text.isNullOrBlank()) {
Toast.makeText(this, "이메일과 비밀번호를 모두 입력하세요.", Toast.LENGTH_SHORT).show()
} else {
//로그인 요청
requestToServer.service.requestLogin(
RequestLogin(
userId = binding.loginEtId.text.toString(),
password = binding.loginEtPw.text.toString()
) //로그인 정보를 전달
).enqueue(object : Callback<ResponseLogin> {
override fun onFailure(call: Call<ResponseLogin>, t: Throwable) {
Log.d("통신 실패", "${t.message }")
}
override fun onResponse(
call: Call<ResponseLogin>,
response: Response<ResponseLogin>
) {
if (response.isSuccessful) {
if (response.body()!!.success) {
Log.d("성공", response.body()!!.data.toString())
myjwt=response.body()!!.data!!.accessToken
startActivity(Intent(this@LoginActivity, MainActivity::class.java));
finish()
} else {
Log.d("실패", "실패")
Toast.makeText(this@LoginActivity, "아이디와 비밀번호를 확인해주세요.", Toast.LENGTH_SHORT).show()
}
}
}
})
깔끔하게 정리하셨네요! 잘보고 갑니다