왜 못씀?
개발 과정중 값을 받아서 처리하는 소프트 딜리트 처리하기 위해
delete method 에 form-data로 id 값을 받으려고 했지만 실패되더라 그래서 찾아보니
HTTP DELETE 메서드는 리소스를 삭제할 때 사용하는 메서드로, 일반적으로 요청 본문을 갖지 않는 것이 표준입니다. 이는 DELETE 메서드가 단순히 URL로 지정된 리소스를 삭제하는 데 중점을 두기 때문입니다. 그러나 DELETE 요청에 본문을 포함할 수 있는지에 대해서는 HTTP 표준에서 명확하게 규정하지 않고 있습니다. 그 결과, 대부분의 웹 서버와 클라이언트 라이브러리는 DELETE 요청에 본문을 포함하는 것을 지원하지 않거나 비표준으로 취급합니다.
라고한다.
따라서 사용하는 통신관련 라이브러리에서도 지원을 안해준다고합니다.
이유가 뭐야
- HTTP 표준의 모호성: HTTP/1.1 RFC 7231 표준에서는 DELETE 메서드에 본문을 포함할 수 있는지 명확하게 규정하지 않습니다. 이는 DELETE 메서드가 일반적으로 URL로 지정된 리소스를 삭제하는 단순한 작업에 사용되기 때문에 본문이 필요하지 않다고 가정하기 때문입니다.
- 서버 구현의 제한: 많은 웹 서버 구현이 DELETE 요청의 본문을 제대로 처리하지 않도록 설계되어 있습니다. 본문을 지원하지 않는 서버에서는 DELETE 요청에 본문이 포함되어도 무시되거나 오류를 반환할 수 있습니다.
- 클라이언트 라이브러리의 제한: 많은 HTTP 클라이언트 라이브러리(예: cURL, axios, fetch 등)가 DELETE 요청에 본문을 포함하는 것을 기본적으로 지원하지 않습니다. 이는 DELETE 요청에 본문이 필요하지 않다는 가정에 기초한 설계입니다.
처리하려면 다음과 같이 해보세요
- 쿼리 파라미터 사용: URL에 쿼리 파라미터를 추가하여 필요한 정보를 전달합니다.
- 헤더 사용: 필요한 추가 데이터를 HTTP 헤더를 통해 전달합니다.
- 다른 HTTP 메서드 사용: 실제 삭제 동작을 수행하는 API 엔드포인트에서 POST나 PATCH 메서드를 사용하여 데이터를 포함시킨 후, 서버 측에서 해당 데이터를 처리하여 삭제 동작을 수행합니다.
'CS' 카테고리의 다른 글
lombok AllArgsConstructor를 안쓰는 이유 (0) | 2024.10.08 |
---|---|
IP 와 Port 그리고 Socket (0) | 2024.08.08 |
Process 와 Thread (0) | 2024.06.10 |
세션과 토큰 쿠키 (1) | 2024.06.10 |
DAO - DTO 차이점 생각해보기 (0) | 2024.06.09 |