0

REST 웹 서비스에는 GET 및 DELETE 메서드가 있습니다.REST : 두 기능 모두에서 동일한 기능을 구현할 수있는 GET과 DELETE의 차이점은 무엇입니까?

일반적으로 GET은 "getCountriesName"과 같은 서버에서 데이터를 가져 오는 것이며 DELETE는 "removeOrganization"과 같은 특정 객체를 삭제하는 리소스를 호출하는 데 사용됩니다.

하지만 "getCountriesName"에 DELETE를 구현하면 국가 이름이 성공적으로 반환됩니다.

어떻게 둘 다 다른가요? 모든 실시간 시나리오?

+0

그것은 무엇보다 열악한 구현처럼 보입니다. 기술적으로는 가능하지만 매우 혼란 스럽기 때문에 그것이 "제약"이 존재하는 이유입니다. – vtortola

답변

0

blog post를 참조 외부 시스템에 노출 될 때 2 REST의 최소 수준을 달성하는 것을 목표로하는 경우 이렇게하면, 잘못된 정보를 줄 것이다 '자원 (Country)와 HTTP VERBS로 끝날 것이다 : 다른 매개 변수들, 나라의 이름을 반환

GET /api/countries/{id}

합니다. URL에 대해 DELETE 요청을 보낼 수도 있습니다. 단, 백엔드에서는 보통 HTTP VERB을 허용하는 메소드가 있습니다. 구현의 세부 사항은 사용하는 언어에 따라 다릅니다. 예를 들어 C#에서 대부분 같은 서명이지만 그 위에 다른 속성 (예 : [HttpDelete])이있는 메소드가 있습니다.

메소드 (getCountriesName/removeOrganization)에 대한 생각은 RESTful이 아니라 SOAP/RPC입니다.

+0

그 두 가지는 단지 예일 뿐이지 만 문제는 DELETE가 GET과 다른 점입니다. 구현이 둘 다 동일하면? – fatherazrael

+0

두 경우 모두 구현이 동일하면 일종의 실수가 있어야합니다. 'GET' 메소드에서는 대개 제공된 ID를 통해 객체/리소스를 검색하지만, DELETE 메소드에서는 처음부터 동일하게 할 수 있지만 DB/소프트에서 삭제합니다 (일부는 업데이트하십시오 상태의 종류) –

1

기술적으로 가능하지만 그렇게하면 REST 표준을 따르지 않을 것입니다. 삭제를 사용하여 리소스를 제거하고 쿼리 할 것을 권장합니다.

+0

그래서 그것은 단지 다음과 같은 표준에 관한 것입니다. 이것은 단지 차이가 ​​있습니까? 기술적으로 그 중 하나를 사용하는 것은 동일합니까? – fatherazrael

+0

예. 그것은 기술적으로 동일합니다. 그러나 표준을 사용하면 누구나 문서를 확인하지 않고 API를 호출하는 방법을 알게됩니다. 따라서 API 노출시 유용합니다. – jgou

1

서비스가 요청을 처리하는 방법은 전적으로 귀하에게 달려 있습니다. 기본적으로 GET 요청을 수신 할 때 새로운 리소스를 만들거나 OPTION을 사용하여 삭제할 수 있습니다.하지만이 작업은 지원 프로토콜 (이 특정 경우에는 HTTP)을 따르지 않으므로 수행하지 않는 것이 좋습니다. 따라서 기본 REST 제약 조건을 위반하게됩니다. 또한 RESTful 서비스는 항상 adhere to and respect the supported protocols이어야합니다. 후자는 주어진 리소스 및 기능에서 연결을 제거함과 반환 응답을 캐시 아니다 또한 RFC 7231, GETDELETE 사이의 주요 차이점 중 어느 한 항에

. 이것은 데이터를 물리적으로 제거 할 수도 있고 제거하지 않을 수도 있지만, 연속적인 DELETE 또는 GET 작업에 대한 결과는 삭제 된 리소스를 더 이상 얻을 수 없어야합니다. 이전 요청에 관계없이 연속적인 DELETE 요청이 서버에 발행됩니다. 이전에 리소스가 삭제 된 경우 동일한 리소스에서 두 번의 삭제 작업 사이에 새 리소스가 생성되지 않은 경우 서비스에서 클라이언트에게 오류 메시지 404 Not Found 오류 응답을 알려야합니다.

GET 응답은 캐시 가능하므로 서버에 요청하는 대신 (프록시 된) 캐시에서 직접 이전 요청의 결과를 반환하여 서버에서 작업을 저장할 수 있습니다. 이것은 프로퍼 캐시 헤더 설정으로 세분화 될 수 있습니다.

관련 문제