मैं एक परियोजना पर काम कर रहा हूं और अपने सभी क्लाइंट साइड ऑपरेशंस के लिए वेब एपीआई पर भारी निर्भर हूं, खाता विवरण अपडेट करें, नए विवरण जोड़े गए हैं, एएसपी.नेट वेब एपी और बैकबोन.जेएससर्वोत्तम अभ्यास: वेब एपीआई नियंत्रकों में त्रुटियों और अपवाद को संभालने के तरीके?
के साथ सबकुछ किया गया हैवर्तमान दृश्य:
चीजों की वर्तमान योजना में, मैं अपने वेब एपीआई नियंत्रकों से एक बूलियन मान लौट रहा हूँ, इंगित करने के लिए कि क्या आपरेशन सफल था या नहीं।
उदाहरण:
[ActionName("UpdateAccountDetails")]
public bool PostAccountDetails(SomeModel model)
{
bool updateStatus = _customService.UpdateAccountDetails(model);
return updateStatus;
}
तो इस कार्रवाई के लिए एक ajax कॉल करने के बाद, मैं सही/गलत और प्रदर्शन त्रुटि या सफलता संदेश के लिए प्रतिक्रिया की जाँच करें।
समस्या:
अब क्या हुआ था मैं अपने कार्रवाई में अपवाद हो रही शुरू कर दिया, और कार्रवाई झूठी लौटने रखा, और त्रुटि संदेश दिखाया गया था। लेकिन मैं क्यों नहीं ढूंढ पाया?
तो मैं सोच रहा था कि मानक एपीआई प्रतिक्रिया संरचना है जो हर कोई निम्नानुसार है?
मैं था शुरू में इस वर्ग के
public class OperationStatus
{
public bool Result { get; set; } // true/false
public string Status { get; set; } // success/failure/warning
public List<string> WarningMessages { get; set; }
public List<string> ErrorMessages { get; set; }
public string OtherDetails { get; set; }
}
यह परिवर्तन एक बड़ा परिवर्तन हो सकता है और समय और संसाधन लेने वाली हो जाएगा वापस जाने के लिए प्रत्येक वेब एपीआई कार्रवाई के लिए इस विचार के साथ आने के, तो मैं इसके लिए बेहतर सोचा इस पर दूसरी/तीसरी/चौथी राय है।
कृपया इस पर कुछ विचार डालें।
अद्यतन:
Mark Jones से कुछ little help साथ, मैं इस
[ActionName("UpdateAccountDetails")]
public HttpResponseMessage PostAccountDetails(SomeModel model)
{
bool updateStatus;
string errorMessage;
try{
updateStatus = _customService.UpdateAccountDetails(model);
if(updateStatus)
{
return Request.CreateResponse(HttpStatusCode.OK);
}
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
catch(Exception exception)
{
errorMessage = exception.Message;
return Request.CreateResponse(HttpStatusCode.InternalServerError, errorMessage);
}
return updateStatus;
}
इस पर कोई विचार के साथ आए हैं?
यह पोस्ट आपको वेबएपीआई के साथ त्रुटि प्रबंधन को लागू करने के बारे में कुछ विचार दे सकता है: http: //blogs.msdn.com/b/youssefm/archive/2012/06/28/error-handling-in-asp-net-webapi .aspx –
आपको केविन और फिलिप के सुझावों को भी नीचे देखना चाहिए। एक अपवाद फ़िल्टर को कार्यान्वित करना एक अच्छा विचार है और जब कोई त्रुटि होती है तो आपको एक HttpResponseException फेंकना चाहिए ताकि आपको अपने क्रिया हस्ताक्षर पर रिटर्न प्रकार को बदलने की आवश्यकता न हो। –