Landroid

Postman에서 같은 이름의 파라미터를 Retrofit에서 구현하는 방법 본문

안드로이드

Postman에서 같은 이름의 파라미터를 Retrofit에서 구현하는 방법

silso 2020. 11. 13. 20:41

자~ 인사는 생략하고 제가 상황을 한 번 가정하겠습니다.

 

여러분은 안드로이드 앱 개발자입니다.

개발을 하기 전에 백엔드 개발자가 만든 명세서를 보다가 이상한 점을 발견합니다.

 

????

바로 백엔드 개발자한테 말하자 되돌아온 말은

???: 응, 저렇게 데이터 여러 개 넣어서 보내줘 ~ ^^

 

???????????

 

 

이 말을 들었을 때 처음 든 생각은

 

 

 

"아니 이걸 어케 구현해 (-_-;;)"

 

 

 

 

하. 지. 만

오랜 시간 삽질한 끝에 드디어 해결책을 찾았습니다!

 

우선 코드부터 보시죠.

@Multipart
@GET("/")
fun getWhat(@PartMap partMap: HashMap<String, RequestBody>): Call<Void>

 

평범하게 해쉬맵으로 보냅니다. 그럼 해쉬맵에 데이터를 어떻게 넣어야 할까요?

 

var requestHashMap: HashMap<String, RequestBody> = HashMap()
requestHashMap["data[0]"] = data[0].toRequestBody("multipart/form-data".toMediaTypeOrNull())
requestHashMap["data[1]"] = data[1].toRequestBody("multipart/form-data".toMediaTypeOrNull())

 

네, 코드를 보시면 해쉬맵에 data[0], data[1] 이런 식으로 키값을 배열처럼 지정하고 값을 넣습니다.

포스트 맨으로 봤을 때 안될 것 같지만 놀랍게도 됩니다!

 

 

만약 넣어야 할 데이터가 여러 개일 경우 일일이 지정하는 것은 힘드니 아래 코드처럼 편하게 할당하면 됩니다.

for (i in data.indices) {
	requestHashMap["hashtags[$i]"] = data[i].toRequestBody("multipart/form-data".toMediaTypeOrNull())
}

 

 

 

이것으로 도움이 되셨길 바라며 다음에 봅시다!

Comments