[ad_1]
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 🙂
[ad_2]
コメント