2009-08-10 6 views
0

RESTful 및 document/message-style은 현재 일반적으로 웹 서비스를 구현하는 두 가지 경향으로 보입니다. 이것에 의해, 나는 REST 대 SOAP과 문서 스타일 대 RPC 스타일을 의미한다.REST는 문서 스타일 웹 서비스에 적합합니까?

제 질문은 문서 스타일 웹 서비스와 REST가 어떻게 호환되는지입니다. REST에 대한 제한된 지식에서 URL로 표시된 원격 자원에 대해 CRUD와 유사한 작업을 수행하기 위해 HTTP GET/POST/PUT/DELETE 동사를 사용합니다.이 방법은 스타일과 같은 더 매력적인 "원격"방법 인 RPC 스타일. 반면 문서 스타일 웹 서비스는 복잡한 정보가 포함 된 요청 문서와 같은 일괄 처리를 보내고 복잡한 정보가 포함 된 응답 문서를 기대하는 등 대대적 인 호출을 강조합니다. "Response"에 대해 하나의 리소스 만 선언하고 POST 동사를 항상 사용하지 않고 (REST의 목적을 무효화하지 않고) REST로 어떻게 잘 수행 할 수 있는지 알 수 없습니다.

필자가 문서 스타일과 RESTful 웹 서비스에 대해 새로운 점을 감안할 때, 위 가정에 대해 아무 것도 모릅니다. 감사!

답변

5

REST에 대한 이해가 잘못되었습니다. 이것은 놀라운 것도 아니고 잘못이 아닙니다. 인터넷에 떠 다니는 REST에 관한 잘못된 정보는 유효한 정보보다 훨씬 많습니다.

REST는 데이터 지향 CRUD 인터페이스보다 분산 형 인터페이스의 거친 입자 스타일 유형에 훨씬 적합합니다. CRUD 작업과 HTTP GET/PUT/POST/DELETE 사이에는 유사점이 있긴하지만 응용 프로그램의 아키텍처에 매우 중요한 미묘한 차이가 있습니다.

SOAP을 통한 REST가 아니라고 생각합니다. SOAP에 대해 REST를 수행하는 것이 가능하지만, 아무도이 작업을 수행하지 않습니다.

SOAP은 일반적으로 "웹 서비스"에 사용되고 REST는 일반적으로 HTTP를 통해 수행됩니다.

+1

답장을 보내 주셔서 감사합니다. 나는이 두 가지가 실제로 함께 작동 할 수 있다는 것을 알게되어서 기쁩니다.하지만 여전히 어떻게 구현해야하는지 확신 할 수 없습니다."REST는 분산 문서 인터페이스의 분산 형 인터페이스 유형에 훨씬 더 적합합니다"라는 이유로 더 자세히 설명해 주시겠습니까? 간단한 예제 나 인터넷상의 유효한 정보를 가리키면 많은 도움이 될 것입니다. "SOAP를 통한 REST"라는 말은 실제로 "REST가 SOAP보다 선호된다"는 의미입니다. 혼란을 피하기 위해 방금 게시물을 편집했습니다. REST가 SOAP과 같은 계층에 있다고 가정하면 다시 틀린가? – hongliang

+2

SOAP와 REST가 같은 계층에 있는지에 관해서는 비슷한 질문에 답을 보아라. http://stackoverflow.com/questions/1225701/well-behaving-restful-client-interactions/1230610#1230610 –

+0

고마워. 특히 웹 서비스는 클라이언트 응용 프로그램에서 처리 할 데이터를 제공하며, RESTful 인터페이스는 사용자에게 렌더링 할 내용을 제공해야합니다. " 내 인터페이스는 실제로 사용자에게 렌더링하지 않고 서버와 클라이언트 응용 프로그램간에 응용 프로그램 정보를 동기화하기위한 것이므로 웹 서비스 접근 방식을 사용해야합니다. – hongliang

1

REST는 문서를 리소스로 간주하는 한 실제로 문서와 함께 사용하도록되어 있습니다.

GET을 사용하면 문서를 검색 할 수 있습니다. 명백하게.

POST를 사용하면 문서를 만들 수 있습니다. API로 문서의 전체 내용을 만들 필요가 없습니다. 실제로 문서를 만드는 데 필요한 것을 결정하는 것은 당신에게 달려 있습니다.

PUT을 사용하면 문서를 수정할 수 있습니다. 다시 말하지만, 클라이언트가 저장할 때마다 전체 문서를 보내도록 강제 할 필요가 없습니다. API가 PUT 요청을 통해 전송 된 델타 업데이트를 지원할 수 있습니다.

DELETE는 분명히 문서를 삭제합니다. 다시 말하지만, 삭제가 실제로 문서의 모든 비트를 파괴하지 않도록 API를 디자인 할 수 있습니다. 휴지통과 유사한 시스템을 만들 수 있습니다.

REST 및 문서 작업에 도움이되는 것은 서버 응답에 응답을 이해하는 데 필요한 모든 정보가 포함되어 있다는 것입니다. 따라서 새 리소스가 생성되면 리소스를 이동 한 경우와 같은 위치를 보내야합니다. 문서화해야 할 데이터 형식은 XML 형식, JSON 등입니다 (XML 형식, JSON 등)

표준 HTTP 메소드는 동작이 이미 정의되어 있기 때문에 클라이언트가 URI를 알고있는 한 API를 쉽게 찾을 수 있기 때문에 존재합니다.

+1

PUT은 부분 업데이트를 수행하지 않아야합니다. 새로운 동사 PATCH를위한 제안이 있습니다. 그때까지 POST와 부분 업데이트를 지원하도록 정의 된 미디어 유형을 사용해야합니다. –

+0

답변 해 주셔서 감사합니다. 그것은 매우 도움이됩니다. 필자의 경우 데이터 수집 클라이언트는 새로 수집 된 데이터뿐만 아니라 ID/마지막 연결 시간 등과 같은 자체에 대한 정보를 보내야합니다. 서버의 응답에는 업데이트 된 서버 데이터/구성이 포함됩니다. 하나의 단일 REST 호출로 작업을 수행하고 싶으므로 요청 및 응답 모두에서 페이로드 데이터를 가지고 있기 때문에 사용 가능한 유일한 동사는 POST입니다. 이것이 REST를 사용하는 올바른 방법이라고 생각하십니까? – hongliang

+0

(600 char 제한 때문에 위의 계속되는 코멘트) "RESTful 한 대안은 두 번의 호출을 사용하는 것입니다 : 요청을위한 POST와 응답을위한"GET "이 있습니다.하지만 실제로는 좋지 않습니다. 게다가, 각 응답 문서와 해당 요청 문서의 상관 관계가 필요합니다 . – hongliang

관련 문제