كيف يمكنني إرجاع رمز حالة http VB.NET Rest API

برمجة


أقوم بإنشاء واجهة برمجة تطبيقات بقية لمطوري تطبيقات الأجهزة المحمولة. أريدهم في كل مرة يتصلون فيها بواجهات برمجة التطبيقات الخاصة بي أن يتحققوا أولاً مما إذا كانت الحالة التي تم إرجاعها هي 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

ثم ستتغير الحالة وسيكون الكائن الذي تم إرجاعه خطأً. أنا شخصياً أفضل إرجاع خطأ الكائن بدلاً من أي شيء آخر …

هتافات 🙂

コメント

タイトルとURLをコピーしました