본문 바로가기
카테고리 없음

[Android] Non-body http method cannot contain @body

by wannagohome97 2024. 9. 3.

Retrofit 으로 작업을 하다가 non-body http method cannot contain @body 라는 에러를 마주했는데

 

직역하면 body 를 사용하지 않는 HTTP Method 에서 Body 를 사용하였다는 것 같습니다.

 

그리고 저의 경우 이 에러는 DELETE 에서 나왔습니다

 

찾아보니 Body 라는 Annotation 은 주로 POST 에서 사용하고 GET 을 비롯한 기타 Method 들에서는 Query 를 사용하라는 말이 많았습니다. 

 

그렇지만 이미 서버 개발자분 께서는 Body 로 받는 걸로 API 를 만들어놓으셨고 IOS 에서도 해당 API 대로 개발이 진행중이었기 때문에 다른 방법이 없나 찾아본 결과..

 

 

 

@DELETE method is not supporting(Non-body HTTP method cannot contain @Body or @TypedOutput.)

@DELETE("/job/deletejob") Observable<JobDeleteResponseModel> jobDelete( @Body JobDeleteRequestModel model); am getting this error: Non-body HTTP method cannot contain @Body or @

stackoverflow.com

 

@DELETE
fun delete(
        @Header("Content-Type") contentType: String = "application/json;charset=UTF-8",
        @Body request: Request.Delete
    ): Call<BaseResponseBody<Request.Delete>>
 

위와 같이 사용 중인 코드에서 @Delete 부분을 아래와 같이 수정하면

@HTTP(method = "DELETE", path = "/...", hasBody = true)

 

hasBody 가 true 인 "DELETE" method 를 사용하는 것으로 명시함으로써 DELETE 임에도 Body 에 데이터를 담아 보낼 수 있습니다.