2017-05-19 6 views
0

HERE은 ASP.NET 웹 API 2 컨트롤러의 모델 유효성 검사를위한 기본 문서이지만 좋습니다. 하지만 우리가 사용자 지정 메시지사용자 지정 HttpStatusCodes으로 보낼 수있는 방법에 대해서는 설명하지 않습니다. 예를 들어ASP.NET 웹 API 2에서 모델 유효성 검사 및 다른 유효성 검사에서 다른 상태 코드 반환

, 나는 '이름'필드가 내 HTTP 응답이

같은 것을보고 싶지

를 제공하지 ' 이름 필수'으로 상태 499 같은 코드와 메시지를 반환 할
HTTP/1.1 **499** 
Bad Request Content-Type: application/json; charset=utf-8 
Date: Tue, 16 Jul 2013 21:02:29 GMT 
Content-Length: 331 

{ 
    "Message": "The request is invalid. *Please check*.", 
    "ModelState": { 
     "product": [ 
     "Required property 'Name' not found in JSON. Path '', line 1, position 17." 
    ], 
    "product.Name": [ 
     "**Name Required**" 
    ] 
    } 
} 

제공된 응답에 표시된대로 사용자 지정 상태 코드와 사용자 지정 메시지를 원합니다.

어떻게하면됩니까?

+0

잘못된 요청에 대한 표준 http 코드를 반환하고 사용자 지정 헤더 또는 응답 본문의 일부로 사용자 지정 코드를 갖습니다. – Nkosi

+0

다른 생각에 동의하지만,'Response.StatusCode'를 설정하고 원하는 데이터로'JsonResult'를 반환 할 수 있습니다. – nurdyguy

+0

이것은 모두가 말하고있는 것처럼 좋은 생각은 아니지만, ** 정말로 **하고 싶다면 ** 몇 가지 해결해야 할 일이 있습니다. (권장하지 않음) 도움이 될 수 있습니다 : 그냥 자신 만의 사용자 지정 클래스 (모델 반환)를 만들고 ModelState.Keys를 'OnActionExecuting' 에 루프로 만들면됩니다. YourObject.Message -> 첫 번째 메시지가됩니다. 의 foreach (actionContext.ModelState.Keys의 VAR 키) { 의 foreach (actionContext.ModelState VAR의 오차 [키] .Errors) { 스트링 메시지 = error.ErrorMessage; -> 사용자가 원하는 것입니다. string fieldName = key; -> 원하는대로 사용하십시오. }} 모드를 사용하여 돌아갑니다. – Prince

답변

0

http 상태 코드는 특별한 의미가 있습니다. 499는 표준 코드가 아니지만 nginx는 이것을 사용하며, 의 갭으로 현재으로 제한됩니다. 대신 응답 본문에 사용자 정의 코드를 반환하십시오.