Comment renvoyer le code d’état http API de repos VB.NET

la programmation


Je construis une API de repos pour les développeurs d’applications mobiles. Je veux qu’à chaque fois qu’ils appellent mes API, ils vérifient d’abord si le statut renvoyé est 200 ou autre chose. J’ai donc cherché sur Google et trouvé ce lien qui gère les codes d’état de l’API rest asp.net :
créer une réponse de l’API Web[^]

Mais mon API Rest est déjà construite d’une autre manière avec 115 méthodes Web et je ne peux pas changer toutes mes méthodes et les rendre ainsi. Vous trouverez ci-dessous un exemple de la façon dont mes méthodes Web sont construites :

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

Où ‘InfoAndTerms’ est une structure dans un module ‘DataTypes’

Ma question est donc la suivante : n’existe-t-il pas un autre moyen de renvoyer le code d’état http avec un objet en réponse ?
Vos aides sont appréciées

Ce que j’ai essayé :

J’ai essayé ceci :

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

Mais lorsque j’ai testé cette méthode, j’ai obtenu le statut 400 au lieu de 500. Alors, quel pourrait être le problème ?

Solution 1

Finalement j’ai trouvé une solution :

Selon ce lien il suffit d’utiliser ‘WebFaultException’ qui changera le statut http. Il existe désormais également une méthode intéressante pour renvoyer l’erreur gérée :

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

Ensuite, le statut changera et l’objet renvoyé sera une erreur. Personnellement, je préfère renvoyer une erreur d’objet plutôt que toute autre chose…

Acclamations 🙂

コメント

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