H.AL Ответов: 1

Как мне вернуть код состояния HTTP VB.NET код API-интерфейс REST


Я создаю rest API для разработчиков мобильных приложений. Я хочу, чтобы они каждый раз, когда они вызывают мои API, сначала проверяли, является ли возвращаемый статус 200 или что-то еще. Поэтому я погуглил и нашел эту ссылку, которая обрабатывает коды состояния rest API asp.net:
создание ответа веб-API[^]
Но мой Rest API уже построен по-другому с 115 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" - это структура в модуле "типы данных".

Поэтому мой вопрос таков: нет ли другого способа вернуть код состояния 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


Но когда я протестировал этот метод, я получил статус 400 вместо 500. Так в чем же может быть проблема?

1 Ответов

Рейтинг:
10

H.AL

Наконец я нашел решение:

Согласно с эта ссылка нам просто нужно использовать 'WebFaultException', который изменит статус http. Теперь есть также хороший метод для возврата обработанной ошибки :

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


Затем состояние изменится, и возвращаемый объект будет ошибкой. Лично я предпочитаю возвращать ошибку объекта вместо всего остального ...

Овации :)