문제상황
서버와 API 통신 중 다음과 같은 에러가 발생했습니다.
"URL query string "PATH={PATH}" must not have replace block. For dynamic query parameters use @Query."
// RetrofitService
@GET("boards?tag={tagName}")
suspend fun getAllPost(
@Path("tagName") tagName: String
): Response<AllPostResponse>
RetrofitService 인터페이스에서 정의한 메소드입니다.
서버측에서 API 명세서에 요청 주소를 "boards?tag={tagName}"로 작성해주었기 때문에 안드로이드에서 별 생각없이 GET 메소드에 @Path 어노테이션만 지정해준다면 Retrofit 통신에 문제가 없다고 생각했습니다.
해결방법
Retrofit 인터페이스의 메소드를 다음과 같이 변경합니다.
@GET("boards")
suspend fun getAllPost(
@Query("tag") tag: String
): Response<AllPostResponse>
@Query 어노테이션을 사용해 "tag"를 키로 갖는 매개변수를 전달하는 방식으로 서버에 요청합니다.
이때, URL 주소의 매개변수명과 @Query의 키 이름이 일치해야 합니다.
728x90
반응형
'Android' 카테고리의 다른 글
[안드로이드] Android Studio targetSdk 33에서 xml 속성이 보이지 않는 경우 (0) | 2023.05.04 |
---|---|
[안드로이드] RecyclerView에서 setHasFixedSize, 화면이 깜빡이는 현상 (0) | 2023.05.02 |
[안드로이드] Material DropDown Menu(드롭다운 메뉴) 만들기 (0) | 2023.04.13 |
[안드로이드] Fragment의 LifeCycle과 동작원리 (1) | 2023.04.11 |
[안드로이드] 다양한 형태의 차트(Chart) 그리기 - MPAndroidChart (1) | 2023.03.25 |