2011-03-17 5 views
0

일부 SOAP 및 REST 서비스를 리팩토링하고 있습니다. SOAP 서비스는 요청 된 엔티티로 응답하고 다른 것은 응답하지 않습니다. 예를 들어, GET은 요청 된 엔티티의 XML 표현을 리턴합니다. 오류의 경우 표준 예외가 발생합니다. REST 서비스에는 동일한 동작이 있습니다.반환 할 부분과 SOAP 서비스의 방법은 무엇입니까?

웹 응용 프로그램 예외를 throw하고 적절한 http 코드를 반환하도록 REST 서비스를 수정합니다 (예 : http 200를 항상 반환하는 대신 성공적인 게시를 위해 http 201). 나는 SOAP에 익숙하지 않으므로, 무엇이 필요한지, 무엇을 바꿀 필요가 있는지 질문한다.

1) 반환 HTTP 코드 (예를 들어, POST/제작 요청에 대한 HTTP 201을 반환) 성공 및 오류 경우에 :

주위 SOAP를위한 가장 좋은 방법은 무엇입니까? 그렇다면 어떻게?

2) 예외를 던집니까? 서비스 호출자가 보낸 잘못된 데이터를 포함하여 모든 오류가 발생 했습니까? 그것은 SOAP 예외인가, WebApplicationException인가?

귀하의 의견을 기다리고 있습니다.

답변

2

SOAP는 전송 계층과 독립적으로 기능하도록 만들어집니다. 비록 당신이 그것을 사용하지 않지만, SOAP는 SMTP와 같은 다른 프로토콜을 통해 전송 될 수 있습니다. 따라서 모범 사례는 다음과 같이 지시합니다.

1) 반환 메시지에서 HTTP 코드를 전혀 반환하지 않아야합니다. 실제로, 당신은 아마 할 수 없습니다. 성공/오류 메시지는 일반적으로 사용자 정의 SOAP 헤더 또는 응답 본문 (응답 본문 메서드가 더 간단 함)에서 정의됩니다.

2) 웹 서비스에서 발생하는 모든 예외는 SOAP 예외 여야합니다. 이렇게하면 클라이언트는 SOAP 예외를 해석하고 적절하게 작동 할 수 있습니다.

+0

의견에 감사드립니다. 답장에서 대답 할 수없는 몇 가지 질문이 있습니다. 모든 오류 (예 : 데이터에 전달 된 실패한 보호 조항)에 대해 예외를 던지십니까? 그리고 SOAP 예외 또는 WebApplicationExceptions가 발생합니까? – TERACytE

+0

클라이언트로 반환하는 모든 예외는 SoapException 유형이어야합니다. 예외를 구성하는 것은 무엇이며 디자인 결정은 아닙니다. 예를 들어 SOAP 요청에 기본 키가 포함되어 있고 데이터베이스에서 해당 키를 찾을 수없는 경우 SOAP 응답에 표시된 오류로 더 적합 할 수 있습니다. 반면에 데이터베이스 연결이 끊어지면 SOAP 예외가 발생할 수 있습니다. 메서드와 비슷합니다 : 오류를 나타 내기 위해 예외를 던지거나 오류를 나타내는 응답 값을 반환하고 해석 할 클라이언트에 남겨 둘 수 있습니다. – Bleaourgh

+0

+1 # 2 특히. Microsoft SharePoint는 SOAP이없는 500 (입력 XML이 잘못되었지만 때로는 경우에만)을 반환하고 SOAP 예외를 반환하는 것 사이에 "차이가납니다". 가장 끔찍한 짜증나. –

관련 문제