2016-08-23 4 views
1

У меня есть api, который попадает на мой сервер, чтобы получить данные с другого сайта. (Я буду использовать facebook в качестве примера)Должен ли мой сервер проходить по коду статуса http из запроса «вложенного»/прокси?

Когда я ударил эту конечную точку api, сервер попытается вернуть мне образы facebook для моей учетной записи facebook. Если я еще не авторизовался в своей учетной записи facebook, должен ли я отправить код статуса 401 обратно на передний план или обработать его на сервере и отправить 200 с ответом, в котором говорится, что он сработал. (Я не забочусь о специфике того, как сказать, что это не удалось)

Пример:

Я нажмите кнопку «Получить фотографии с Facebook».

mydomain.com/get-facebook-photos/ ---> Сервер выстреливает в facebook.com/whatever-the-url-is/ Facebook возвращает 401, потому что мне нужно войти в систему.

Что должен мой код ответа быть от mydomain.com/get-facebook-photos/?

Я думал, что было бы странно, если бы моя собственная конечная точка вернула 401, когда мне разрешили нанести удар, но следующего уровня не было.

Какова наилучшая практика для этого. Я бы предпочел, чтобы какая-то документация, в которой излагалась наилучшая практика и почему и т. Д.

Очевидно, что я должен где-то обрабатывать 401, и я думал, что лучшее место будет на моем сервере/конечной точке.

ответ

0

Я думаю, что общий ответ вернуться 502.

Однако для этого запроса, 401 имеет больше смысла. Особенно, если они не разрешают вашу службу. Есть, вероятно, другие варианты использования, когда имеет смысл вернуть код состояния восходящего потока.

Кроме того, если вы возвращаете 502, полезно вернуть статус восходящего и Предупреждение. Они должны быть возвращены в заголовок предупреждения.

+0

Мне нравится идея отправки 502, но не 502 недействительна? «не аутентифицирован» - это правильный ответ, не так ли? – Jacques

+0

No 502 - плохой шлюз. 401 является допустимым ответом, но возникает вопрос: _Что является смысловым и имеет наибольший смысл? _ –

+0

502 «... получил недействительный ответ от входящего сервера, к которому он обращался при попытке выполнить запрос». – Jacques