Как различить код состояния IIS и код статуса приложения Web API - PullRequest
1 голос
/ 10 марта 2019

принять следующую конечную точку в качестве службы, которая возвращает информацию о пользователе на основе ее идентификатора

/getUser?id=1234

Как клиент или инструмент мониторинга могут отличить того, что пользователь с id = 1234 не существует, от пользователя, запрашивающего страницу, которая не существует?

та же проблема, что и у меня, для всех кодов состояния, например, 500 моя инфраструктурная команда сказала мне, что вы сообщаете вводящую в заблуждение информацию, поскольку они не могут отличить 500 источников от моего сервиса и 500, полученных от самого сервера IIS

1 Ответ

0 голосов
/ 10 марта 2019

Это очень хороший вопрос.

Большинство обучающих программ с радостью скажут вам вернуть NotFound, который равен 404. Я полагаю, что этим людям никогда не приходилось создавать И поддерживать API производственного уровня.

Вы должны иметь некоторые соглашения и придерживаться их. Я предпочитаю возвращать 204 вместо 404. 204 означает, что вызовы были успешными, но контента не было. Таким образом, вы будете иметь четкую разницу между данными не существует и конечной точки не существует .

Что касается 500, ваш API никогда не должен возвращать 500, если на стороне сервера не произошло что-то действительно плохое и неисправимое. Я бы посоветовал не радостно бросать исключения для всего. Если ваши бизнес-правила не выполняются, это не повод бросать что-либо. Если ваш API не может получить доступ к вашей базе данных, это потребует 500, чтобы было очевидно, что произошло что-то действительно плохое. Что касается вашего сообщения о проблеме 500, я не согласен с этим. У IIS есть свои собственные журналы, у вашей службы будут свои собственные журналы, так что да, ваша инфраструктурная команда может отличаться.

...