[ad_1]
Estoy creando una API de descanso para desarrolladores de aplicaciones móviles. Quiero que cada vez que llamen a mis API verifiquen primero si el estado devuelto es 200 o algo más. Así que busqué en Google y encontré este enlace que maneja los códigos de estado de la API restante asp.net:
crear una respuesta de API web[^]
Pero mi API Rest ya está construida de otra manera con 115 métodos web y no puedo cambiar todos mis métodos y hacerlos así. A continuación se muestra un ejemplo de cómo se construyen mis métodos web:
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
Donde ‘InfoAndTerms’ es una estructura en un módulo ‘Tipos de datos’
Entonces mi pregunta es: ¿no hay alguna otra forma de devolver el código de estado http con un objeto como respuesta?
Se agradecen tus ayudas
Lo que he probado:
He probado esto:
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
Pero cuando probé este método obtuve el estado 400 en lugar de 500. Entonces, ¿cuál podría ser el problema?
Solución 1
Finalmente encontré una solución:
De acuerdo a este enlace sólo tenemos que usar ‘WebFaultException’ que cambiará el estado de http. Ahora también hay un buen método para devolver el error manejado:
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
Entonces el estado cambiará y el objeto devuelto será un error. Personalmente prefiero devolver error de objeto en lugar de cualquier otra cosa…
Salud 🙂
[ad_2]
コメント