웹 서비스에서 요청 된 개체 내에 오류 메시지를 유지하는 권장 방법이 있습니까?
일부 예에서는 일부 HTTP 오류 코드를 포함하는 래퍼 클래스를 반환하는 웹 서비스를보고, 다른 일부는 .NET 예외 메시지를 보유하고 있습니다. 반면에 일반 객체 또는 객체 목록을 반환하는 예제가 있습니다.
오류 처리는 처음에는 혼란스러워 보일 수 있습니다. 공식 문서가 여기에있다 . 그러나 본질적으로 ServiceStack은 일관된 방식으로 오류를 반환하므로 클라이언트는 항상 오류를 처리하는 방법을 알고 있습니다. 일반적인 C # 방식으로 예외를 throw해야합니다. ServiceStack은이를 포착하여 다음과 ResponseStatus
같은 개체에 캡슐화합니다 .
public class ResponseStatus
{
public string ErrorCode { get; set; }
public string Message { get; set; }
public string StackTrace { get; set; }
public List<ResponseError> Errors { get; set; }
}
따라서 위 ResponseStatus
의 채워진 ResponseStatus
개체 가있는 속성이 포함 된 응답 개체를 받게됩니다 .
참고할 사항 :
이 StackTrace
속성은 debug
ServiceStack AppHost Config에서 모드 를 활성화 한 경우에만 포함됩니다 . 즉 :
SetConfig(new HostConfig { DebugMode = true });
이것은 참조하는 .NET 예외 DebugMode
이며 설정 여부 에 따라 조건부로 표시 됩니다.
Errors
의 목록 ResponseError
IS은 유효성 검사 오류 실패에 대한 채워집니다. 이것은 유효성 검사 오류 목록입니다. 그렇기 때문에 일부 예제에서 일반 오류 응답 (예 : 유효성 검사 오류 아님 )과 오류 목록이 첨부 된 응답 (유효성 검사 오류)이 표시 됩니다. 문서에서 유효성 검사에 대한 섹션도 읽어야합니다 . ResponseError
개체 의 형식 은 다음과 같습니다.
public class ResponseError
{
public string ErrorCode { get; set; }
public string FieldName { get; set; }
public string Message { get; set; }
}
ErrorCode
와 Message
의 ResponseStatus
객체의 첫 번째 항목에서 이동합니다 Errors
목록입니다.
어떤 사람들에게 혼란스러워 ResponseStatus
지는 곳은 예상되는 응답 요청의 속성으로 를 포함하는 방법 입니다.
따라서 다음 Person
과 같은 객체 를 반환하고 싶다고 가정합니다 .
class Person
{
string FirstName { get; set; }
string LastName { get; set; }
}
이 Person
응답 을 반환하는 요청에 대해 유효성 검사 예외가 발생한 경우 다음 과 같은 JSON 응답을받을 수 있습니다.
{
"ResponseStatus": {
"ErrorCode": "ShouldNotBeEmpty",
"Message": "'FirstName' should not be empty",
"StackTrace": "..."
"Errors": [
{
"ErrorCode": "ShouldNotBeEmpty",
"FieldName": "FirstName",
"Message": "'FirstName' should not be empty"
},
{
"ErrorCode": "ShouldNotBeEmpty",
"FieldName": "LastName",
"Message": "'LastName' should not be empty"
},
]
}
}
Person의 응답 객체는이 응답에 포함되지 않으며 ResponseStatus
속성을 포함하는 객체 일뿐 입니다. 상태와 함께 응답 객체를 포함하려면 다음과 같이 사람 클래스를 선언해야합니다.
class PersonResponse
{
ResponseStatus ResponseStatus { get; set; }
string FirstName { get; set; }
string LastName { get; set; }
}
그런 다음 예외가 발생하면 응답에 응답 객체와 상태가 포함됩니다.
{
"FirstName": "",
"LastName": "",
"ResponseStatus": {
...
ServiceStack은 예외가 발생할 때 반환하는 오류 형식에 대한 많은 제어 기능을 제공합니다. 위에서 링크 한 공식 문서를 읽고 이해하는 것이 가장 좋습니다. 사용자 정의는 고급 주제에 가깝습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다