본문 바로가기
Android

[안드로이드] Retrofit2 오류 : "URL query string "PATH={PATH}" must not have replace block. For dynamic query parameters use @Query."

by JongSeok 2023. 4. 17.

문제상황

서버와 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
반응형