관리 메뉴

나만을 위한 블로그

[Android] Retrofit의 DELETE 사용 시 @Body를 사용할 경우 처리법 본문

Android

[Android] Retrofit의 DELETE 사용 시 @Body를 사용할 경우 처리법

참깨빵위에참깨빵_ 2021. 6. 8. 01:18
728x90
반응형

레트로핏의 어노테이션 중 @DELETE가 있다. 이 @DELETE를 사용할 때는 Body를 추가할 수 없다.

하지만 부득이하게 추가해서 사용해야 하는 경우가 생길 수 있는데, 그럴 경우 아래와 같이 사용하면 된다.

 @HTTP(method = "DELETE", path = "xx.xxx.xxx.xx/api/delete.php", hasBody = true)
    Call<String> deleteReview(
            @Header("information") String information,
            @Body String something
    );

@HTTP 어노테이션을 사용하면 @DELETE를 사용하더라도 Body를 추가할 수 있다.

@HTTP에 대한 자세한 설명은 아래 링크 참고.

https://square.github.io/retrofit/2.x/retrofit/retrofit2/http/HTTP.html

 

HTTP (Retrofit 2.7.1 API)

A relative or absolute path, or full URL of the endpoint. This value is optional if the first parameter of the method is annotated with @Url. See base URL for details of how this is resolved against a base URL to create the full endpoint URL.

square.github.io

1번 인자인 method는 필수 입력값으로 DELETE인지 GET인지 등을 명시하는 곳이다. 당연히 필수 입력사항이다.

2번 인자인 path는 엔드 포인트의 상대 or 절대 경로 또는 전체 URL을 명시한다. 내 경우 그냥 삭제하는 서버 스크립트가 있는 전체 경로를 적어주었다. 상대 또는 절대 경로가 있다면 그것을 적어도 정상 작동한다. 더 자세한 내용은 링크 참고.

3번 인자인 hasBody는 true로 두었다. Body를 넘길 거니까 당연히 true로 둬야 한다고 생각했다.

 

이렇게 정의하고 레트로핏 메서드를 호출하면 정상적으로 삭제 기능이 작동하는 걸 볼 수 있다.

반응형
Comments