[ad_1]
أقوم بإنشاء واجهة برمجة تطبيقات بقية لمطوري تطبيقات الأجهزة المحمولة. أريدهم في كل مرة يتصلون فيها بواجهات برمجة التطبيقات الخاصة بي أن يتحققوا أولاً مما إذا كانت الحالة التي تم إرجاعها هي 200 أو أي شيء آخر. لذلك بحثت في Google ووجدت هذا الرابط الذي يتعامل مع رموز الحالة الخاصة بواجهة API asp.net:
إنشاء استجابة Web API[^]
لكن تم إنشاء Rest API الخاصة بي بالفعل بطريقة أخرى باستخدام 115 طريقة ويب ولا يمكنني تغيير جميع أساليبي وجعلها على هذا النحو. فيما يلي مثال لكيفية إنشاء أساليب الويب الخاصة بي:
Public Function InfoAndTerms(ByVal Lang As String) As Information() Implements IService.InfoAndTerms Dim result() As Information Try ' Do something and fill result Catch ex As Exception ' Do something else Finally InfoAndTerms = result End Try End Function
حيث يكون “InfoAndTerms” عبارة عن بنية في وحدة “DataTypes”.
لذا فإن سؤالي هو: أليس هناك أي طريقة أخرى لإرجاع رمز حالة http مع الكائن كاستجابة؟
هي موضع تقدير مساعدتكم
ما حاولت:
لقد حاولت هذا:
Public Function InfoAndTerms(ByVal Lang As String) As Information() Implements IService.InfoAndTerms Dim result() As Information Try ' Do something and fill result Catch ex As Exception Throw New System.Web.HttpException(500, "Error - InfoAndTerms") Finally InfoAndTerms = result End Try End Function
ولكن عندما اختبرت هذه الطريقة حصلت على الحالة 400 بدلاً من 500. إذن ما هي المشكلة؟
الحل 1
وأخيرا وجدت الحل:
وفق هذا الرابط علينا فقط استخدام “WebFaultException” الذي سيغير حالة http. الآن هناك أيضًا طريقة لطيفة لإرجاع الخطأ الذي تمت معالجته:
Public Function TestMethod2(ByVal name As String) As String Implements IService.TestMethod2 If name = "" Then Dim str As New ErrMessage str.intErr = 1 str.strErrMessage = "bla bla bla" Throw New WebFaultException(Of ErrMessage)(str, HttpStatusCode.BadRequest) End If Return name End Function
ثم ستتغير الحالة وسيكون الكائن الذي تم إرجاعه خطأً. أنا شخصياً أفضل إرجاع خطأ الكائن بدلاً من أي شيء آخر …
هتافات 🙂
[ad_2]
コメント