예를 들면 다음과 같습니다.
public HttpResponseMessage Post(Person person)
{
if (ModelState.IsValid)
{
PersonDB.Add(person);
return Request.CreateResponse(HttpStatusCode.Created, person);
}
else
{
// the code below should probably be refactored into a GetModelErrors
// method on your BaseApiController or something like that
var errors = new List<string>();
foreach (var state in ModelState)
{
foreach (var error in state.Value.Errors)
{
errors.Add(error.ErrorMessage);
}
}
return Request.CreateResponse(HttpStatusCode.Forbidden, errors);
}
}
이렇게하면 다음과 같은 응답이 반환됩니다 (JSON을 가정하지만 XML의 기본 원칙은 동일 함).
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
(some headers removed here)
["A value is required.","The field First is required.","Some custom errorm essage."]
물론 필드 이름, 필드 ID 등을 추가하는 등 원하는 방식으로 오류 개체 / 목록을 구성 할 수 있습니다.
새 엔티티의 POST와 같은 "단방향"Ajax 호출 인 경우에도 호출자에게 요청이 성공했는지 여부를 나타내는 무언가를 반환해야합니다. 사용자가 AJAX POST 요청을 통해 자신에 대한 정보를 추가하는 사이트를 상상해보십시오. 입력하려는 정보가 유효하지 않은 경우 어떻게하면 저장 작업이 성공했는지 여부를 어떻게 알 수 있습니까?
이 작업을 수행하는 가장 좋은 방법은 사용하는 좋은 올드 HTTP 상태 코드를 같은 200 OK
등등. 이렇게하면 JavaScript가 올바른 콜백 (오류, 성공 등)을 사용하여 실패를 올바르게 처리 할 수 있습니다.
다음은 ActionFilter 및 jQuery를 사용하는이 방법의 고급 버전에 대한 멋진 자습서입니다. http://asp.net/web-api/videos/getting-started/custom-validation
System.Net.Http
,System.Net
System.Web.Http.Controllers
하고System.Web.Http.Filters
.