इस तरह, उदाहरण के लिए:
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."]
आप निश्चित रूप से अपनी त्रुटि वस्तु का निर्माण कर सकते हैं / किसी भी तरह से सूची बना सकते हैं, उदाहरण के लिए फ़ील्ड नाम, फ़ील्ड आईडी आदि जोड़ना।
यहां तक कि अगर यह एक "एक ही रास्ता" है अजाक्स एक नई इकाई के POST की तरह है, तो आपको अभी भी कॉलर को कुछ वापस करना चाहिए - ऐसा कुछ जो इंगित करता है कि अनुरोध सफल था या नहीं। एक साइट की कल्पना करें जहां आपका उपयोगकर्ता AJAX POST अनुरोध के माध्यम से अपने बारे में कुछ जानकारी जोड़ेगा। क्या होगा यदि उन्होंने जो जानकारी दर्ज करने की कोशिश की है वह वैध नहीं है - उन्हें कैसे पता चलेगा कि उनकी सेव एक्शन सफल थी या नहीं?
ऐसा करने का सबसे अच्छा तरीका अच्छा पुराने HTTP स्थिति कोड का उपयोग करना है जैसे कि 200 OK
और इतने पर। इस तरह आपका जावास्क्रिप्ट सही कॉलबैक (त्रुटि, सफलता आदि) का उपयोग करके विफलताओं को ठीक से संभाल सकता है।
एक्शनफ़िल्टर और jQuery का उपयोग करके इस पद्धति के अधिक उन्नत संस्करण पर एक अच्छा ट्यूटोरियल दिया गया है: http://asp.net/web-api/videos/getting-started/custom-validation
System.Net.Http
,System.Net
System.Web.Http.Controllers
औरSystem.Web.Http.Filters
।