2010-01-31 1 views
8

URI에 동작 동사를 포함시키는 것이 URI 구문의 REST 프로토콜을 위반하는 이유를 이해해야합니다. 클라이언트 브라우저는 것이다 완벽한 세계에서REST 구현의 URI에 동작 동사를 포함시키는 것이 프로토콜을 위반하는 이유는 무엇입니까?

RestWiki: Minimum Methods

: 나는 다음과 같은 기사를 읽을 때, 나는 너무 많은 사람들이 동사에 대해 너무 많은 소음을 만드는 것을, 그들은 콘텐츠 유형에 대한 자세한 소음을 만드는 것을 감지 모두 요청 조작을 위해 GET, POST, PUT 및 DELETE를 지원합니다. 그러나 GET 및 POST 만 지원되므로보기, 만들기, 편집 및 삭제와 같은 URL에서 일반적인 동작 동사를 사용하여 PUT 및 DELETE가되어야하는 작업을 식별하려고 노력하고 있습니다.

이것은 REST 아키텍처 원칙의 정신에 위배되며 "삭제"를 사용하는 대신 URL에 "삭제"와 같은 것을 넣음으로써 발생하는 장애물은 무엇입니까?

+3

REST는 프로토콜 아니다, 그것은 건축 스타일입니다. – occulus

답변

15

URI 관련 지침이 유효한 유일한 이유는 REST 동사의 올바른 사용을 장려하는 것입니다. 요청이 HTTP 표준에 따라 클라이언트의 기대치와 일치하는 작업을 수행하면 실제로 URL에 무엇이 포함되는지는 중요하지 않습니다.

명사에 따라 URL을 명명하면 GET, PUT, POST 및 DELETE의 목적과 일치하는 동작을 만드는 것이 자연 스럽습니다.

URL에 동사를 넣으면 http 동사가 URL의 동사와 모순되는 행동을하기 때문에 매우 혼란 스러울 수 있습니다. REST 규칙은 HTTP 동사를 존중해야한다고 말하지만 일반적으로 URL은보다 설명 적이므로 오도 할 수 있습니다.

HTTP 동사의 하위 집합 만 지원한다는 사실은 모든 HTTP 동사에 대한 전체 액세스 권한이 있더라도 인쇄, 닫기, 확인과 같은 다른 동사를 모델링 할 수 있어야하기 때문에 실제로는 관련이 없습니다. , 취소.

REST 구현에 대해 이야기 할 때 사람들이 URL 구조보다 콘텐츠 형식에 더 집중해야한다는 것이 옳다.

URL이 명사를 참조하게 만드는 것이 REST 제약이 아니기 때문에 사람들이 성공의 구덩이에 빠지도록 격려하는 것입니다.

+0

"URL이 명사를 참조하게 만드는 것이 REST 제약이 아니므로 사람들이 성공의 구덩이에 빠지도록 격려하는 것입니다." 그 말은 실제로 많이 - 감사합니다! –

3

REST는 프로토콜이 아니라 오히려 스타일입니다. 따라서 귀하는 귀하의 요구 사항에 맞는 것을 자유롭게 할 수 있습니다.

HTTP 동사는 가능한 경우 HTTP 프로토콜의 일부이며 표준으로 사용되기 때문에 선호됩니다. 또한 맞춤식 미들웨어를 작성할 필요없이 표준 웹 서버에서 기존 보안 및 캐싱 계층을 사용할 수 있습니다.

REST는 HTTP를 받아 들여야하며 SOAP, RPC 또는 CORBA와 같은 추상화 계층을 추가하지 말 것을 제안합니다. 추가 동사를 추가하거나 URL에 추가하면 가벼운 추상화로 보일 수 있습니다.

그러나 언급 한 바와 같이 이러한 요소는 브라우저 전체 또는 일부 버전의 플래시에서 일관되게 지원되지 않습니다. 따라서 클라이언트 측에서 액세스하는 경우 URL을 실제 세계에 배치해야 할 수도 있습니다.

URL을 통해 DELETE/PUT을 수행 할 때 심각한 보안 문제가 있으므로주의 깊게 살펴야합니다.

나는 GET POST PUT과 DELETE 동사가 거의 모든 필요에 적합하다는 것을 제안합니다.새로운 동사 또는 응답 코드가 필요하지 않아야합니다. 이러한 코드는 일반적인 용도로 사용됩니다. 요청 및 응답 데이터에 추가 정보를 추가하십시오.

체크에서 더 많은 정보를 원하시면,이 SO 기사 : Understanding REST: Verbs, error codes, and authentication