Сейчас я работаю над API и просто хочу собрать мнения о том, где лучше всего передавать ключ API. Я знаю, что это не должно идти в URL, это оставляет заголовок запроса или тело сообщения.
Если я помещу это в заголовок, я могу придумать универсальный метод для его извлечения, который можно использовать во всех сервисах, однако спецификация, которую я получил, требует его в теле (то есть в строке JSON, включенной как часть сериализованный объект в теле POST).
Ответы:
В HTTP есть
Authorization
заголовок для этого.Хотя он обычно используется для предоставления учетных данных пользователей, в случае API он может содержать идентификатор клиента и соответствующий ключ API.
Есть несколько преимуществ:
Поддержка из разных рамок. Многие фреймворки ожидают
Authorization
заголовок для аутентификации. Отказ от его использования заставит писать дополнительный код для подачи этих структур с пользовательскими значениями.Поддержка из разных инструментов. Например, CURL.
Меньше «WTF, где я могу найти / поместить этот ключ API ?!» от новых разработчиков, присоединившихся к команде (или разработчиков, разрабатывающих новых клиентов для вашего API).
Затем вы можете использовать определения кода состояния HTTP, например
401 Unauthorized
, для которых :Перемещение его в тело запроса может быстро стать болезненным. Большинство фреймворков и инструментов не упрощают добавление тела к запросу, что может сделать ваш API более сложным, чем это необходимо.
источник