카테고리 없음
안드로이드 스튜디오와 Django연결하기-4
sorecord
2025. 3. 12. 16:44
오늘은 안드로이드 스튜디오에서 Django DB로 값을 보내는 날이다.
어제했었던 코드에서 2가지만 추가를 해주면된다.
ApiService.kt
import retrofit2.http.POST
import retrofit2.http.Body
@POST("tests/")
fun createTest(@Body test: Test): Call<Test>
@POST: 이 어노테이션은 HTTP POST 요청을 나타낸다. 주어진 URL("tests/")에 데이터를 전송하는 데 사용
@Body: 이 어노테이션은 test 객체가 HTTP 요청의 본문(body)로 전송됨을 의미
MainActivity.kt
// 입력 필드
TextField(
value = newTestText,
onValueChange = { newTestText = it },
label = { Text("New Test") }
)
Button(onClick = {
val newTest = Test(id = 0, test = newTestText) // Test 객체 생성
RetrofitInstance.apiService.createTest(newTest).enqueue(object : Callback<Test> { // API 호출
override fun onResponse(call: Call<Test>, response: Response<Test>) {
if (response.isSuccessful) {
Log.d("MainActivity", "Create Success: ${response.body()}")
fetchTests { fetchedTests -> // 목록 갱신
tests = fetchedTests ?: emptyList()
}
newTestText = "" // 입력 필드 초기화
} else {
Log.e("MainActivity", "Create Error: ${response.code()}")
}
}
override fun onFailure(call: Call<Test>, t: Throwable) {
Log.e("MainActivity", "Create Failure: ${t.message}")
}
})
}) {
Text("Create Test")
}
newTest: 사용자가 입력한 내용을 기반으로 새로운 Test 객체를 생성. id는 0으로 설정하여 새 객체임을 나타낸다.
createTest(newTest)는 Retrofit API를 통해 서버에 새로운 테스트를 생성하기 위해 POST 요청을 보낸다. (enqueue 메서드를 사용하여 비동기적으로 요청을 처리.)
onResponse: API 호출이 성공적으로 완료되면 호출되는 메서드이다.
이 내부에 있는 fetchTests는 테스트 목록을 갱신하기 위해 fetchTests 함수를 호출한다. 새로 생성된 테스트를 포함한 최신 목록을 가져온다.
이렇게 구현하면 데이터가 문제없이 이동하는 것을 확인할 수 있다.