Làm cách nào để trả về mã trạng thái http API còn lại VB.NET

lập trình


Tôi đang xây dựng API còn lại cho các nhà phát triển ứng dụng dành cho thiết bị di động. Tôi muốn họ mỗi lần gọi API của tôi hãy kiểm tra trước xem trạng thái trả về là 200 hay trạng thái nào khác. Vì vậy, tôi đã tìm kiếm và tìm thấy liên kết này đang xử lý mã trạng thái của API asp.net còn lại:
tạo phản hồi API Web[^]

Nhưng Rest API của tôi đã được xây dựng theo cách khác với 115 phương thức web và tôi không thể thay đổi tất cả các phương thức của mình và biến chúng thành như thế này. Dưới đây là ví dụ về cách xây dựng phương thức web của tôi:

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

Trong đó ‘InfoAndTerms’ là Cấu trúc trong mô-đun ‘DataTypes’

Vì vậy, câu hỏi của tôi là: không có cách nào khác để trả về mã trạng thái http với đối tượng làm phản hồi không?
Sự giúp đỡ của bạn được đánh giá cao

Những gì tôi đã thử:

Tôi đã thử điều này:

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

Nhưng khi tôi thử nghiệm phương pháp này, tôi nhận được trạng thái 400 thay vì 500. Vậy vấn đề có thể là gì?

Giải pháp 1

Cuối cùng tôi đã tìm được giải pháp:

Dựa theo liên kết này chúng ta chỉ cần sử dụng ‘WebFaultException’ để thay đổi trạng thái http. Bây giờ cũng có một phương pháp hay để trả về lỗi đã xử lý:

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

Khi đó trạng thái sẽ thay đổi và đối tượng trả về sẽ có lỗi. Cá nhân tôi thích trả về lỗi đối tượng thay vì bất cứ điều gì khác …

Chúc mừng 🙂

コメント

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