Ключ API - у вмісті чи заголовку


14

Наразі працював над API і просто хотів зібрати думки про те, де має бути найкраще місце для передачі ключа API. Я знаю, що це не повинно йти в URL-адресі, це залишає заголовок запиту або тіло повідомлення.

Якщо я поміщую його в заголовок, я можу придумати загальний метод його витягування, який можна використовувати в усіх службах, проте специфікація, яку мені передали, хоче, щоб вона була в тілі (тобто в рядку JSON, включеному як частина серіалізований об’єкт в тілі POST).


Зауважте також, що не всі типи запитів повинні мати тіло, і якщо ви хочете перевірити запит без тіла, ключ повинен бути в заголовку.
Whymarrh

Відповіді:


11

У HTTP є Authorizationзаголовок для цього.

Хоча він зазвичай використовується для надання облікових даних користувачів, у випадку API він може містити ідентифікатор клієнта та відповідний ключ API.

Є кілька переваг:

  • Підтримка різних рамок. Багато кадрів очікують Authorizationзаголовка, щоб зробити аутентифікацію. Якщо його не використовувати, це змусить писати додатковий код для подачі цих фреймів із спеціальними значеннями.

  • Підтримка різних інструментів. Наприклад, CURL

  • Менше "WTF, де я можу знайти / поставити цей ключ API ?!" від нових розробників, що приєднуються до команди (або розробників, які розробляють нових клієнтів для вашого API).

  • Потім ви можете використовувати статус HTTP визначення коди , такі як 401 Unauthorized, для яких :

    Відповідь ОБОВ'ЯЗКОВО включає поле заголовка WWW-Authenticate [...] Клієнт МОЖЕ повторити запит із відповідним полем заголовка Авторизації.

Переміщення його до тіла запиту може стати болючим. У більшості фреймворків та інструментів не дуже просто додати тіло до запиту, що може зробити ваш API складнішим, ніж потрібно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.