【解決方法】httpステータスコードVB.NET REST APIを返すにはどうすればよいですか

プログラミングQA


モバイル アプリ開発者向けの REST API を構築しています。 API を呼び出すたびに、返されたステータスが 200 かそれ以外かを最初に確認してもらいたいのです。 だから私はグーグルで、残りのAPI asp.netのステータスコードを処理しているこのリンクを見つけました:
Web API レスポンスを作成する[^]

しかし、私の Rest API は既に 115 の Web メソッドで別の方法で構築されており、すべてのメソッドを変更してこのようにすることはできません。 以下は、私の webmethods の構築方法の例です。

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

しかし、この方法をテストしたところ、ステータスが 500 ではなく 400 になりました。何が問題なのでしょうか?

解決策 1

最後に解決策を見つけました:

によると このリンク httpステータスを変更する「WebFaultException」を使用するだけです。 処理されたエラーを返す素敵なメソッドもあります:

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をコピーしました