¿Cómo devuelvo el código de estado http API de resto de VB.NET?

programación


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 🙂

コメント

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