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

thsamajiki·2023년 11월 26일
0

트러블슈팅

목록 보기
12/25

오류

Retrofit 2를 이용한 REST API를 구현하는 과정에서 다음과 같은 오류가 발생했다.

"URL query string "PATH={PATH}" must not have replace block. For dynamic query parameters use @Query."

오류가 발생한 곳은 RetrofitService 인터페이스에서 정의한 메소드인데,

@GET("infos?dataValue={value}")
    suspend fun getDataList(
        @Path("id") id: Int,
        @Path("title") title: String,
        @Query("dataObject") dataObject: DataObject,
        @Query("value") value: String
    ): DataResponseDTO

백엔드 서버 측에서 API 명세서에 요청 주소를 "infos?value={value}"로 작성해주었기 때문에 안드로이드에서 별 생각없이 GET 메소드에 @Path 어노테이션만 지정해준다면 Retrofit 통신에 문제가 없다고 생각했다.



해결방법

Retrofit 인터페이스의 메소드를 다음과 같이 변경한다.

@GET("infos")
suspend fun getDataList(
    @Query("dataValue") dataValue: String
): DataResponseDTO

@Query 어노테이션을 사용해서 "dataValue"를 키로 갖는 매개변수를 전달하는 방식으로 서버에 요청한다.

이때, URL 주소의 매개변수명과 @Query의 키 이름이 일치해야 한다.

profile
안드로이드 개발자

0개의 댓글