마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 코틀린 restapi로 post 요청시 질문드립니다.

0 추천

출처 : https://aiopen.etri.re.kr/guide_recognition.php#group04

 

코틀린으로 Retrofit을 이용하여 restapi 요청을 보내려고 합니다.

개발 가이드에 POST방식을 사용하여 호출하라고 하고 

요청파라미터는 아래그림과 같이 4개로 나와있습니다.(각 데이터 타입은 아래와 같습니다)

이용 api 요청 메세지가 위 그림과 같은데

코틀린에서 data class를 작성할때 이런식으로 작성했는데 맞는 걸까요?? ㅜㅜ

위 그림에 request body라 적혀있어서 Body 어노테이션을 사용했는데, 

찾아보니 Header, query 등등 많더군요.. 이것을 어떤식으로 사용해야될지 잘 모르겠습니다.

도움 부탁드립니다.

 

lns0mnia (380 포인트) 님이 2021년 3월 22일 질문

1개의 답변

0 추천
 
채택된 답변

Body에 해당하는 클래스를 만들고 사용하시면 됩니다.

data class SoundRecogBody(
     val access_key: String,
     val argument: String,
     val languate_code: String,
     val audio: String
)


interface SoundRecogApi {

    @Post("...")
   fun transferSound(@Body requestBody: SoundRecogBody): Call<return_object>
}

 

참고로 Kotlin도 Java 마찬가지로 property는  camelCase(eg. accessKey, languageCode), 
Class는  PascalCase(eg. Rerturn Object)를 사용합니다.
이건 법용적인 규칙이기  때문에 가능하면 지켜주시는 것이 좋습니다. 모던 프로그래밍에서 아주 중요하게 생각하는게 네이밍이거든요.
만약 property를 camelCase로 사용하실 경우는 Gson을 Json convert로 사용한다고 치면, @Serializename  어노테이션을 사용하여 
올바로된 네이밍을 각 property에 적용하실 수 있습니다.

data class SoundRecogBody(
     @SerializedName("access_key") val accessKey: String,
     @SerializedName("argument") val argument: String,
     @SerializedName("languate_code") val languateCode: String,
     @SerializedName("audio")  val audio: String
)

 

spark (224,800 포인트) 님이 2021년 3월 22일 답변
lns0mnia님이 2021년 3월 26일 채택됨
감사합니다!! 위 방법으로 해결되었습니다!!
...