Klucz API - w treści lub nagłówku

14

Obecnie pracuję nad interfejsem API i chciałem tylko zebrać opinie na temat tego, gdzie powinno być najlepsze miejsce do przesłania klucza API. Wiem, że nie powinno to wchodzić w adres URL, pozostawia to nagłówek żądania lub treść wiadomości.

Jeśli wstawię go do nagłówka, mogę wymyślić ogólną metodę wyciągania go, która może być używana we wszystkich usługach, jednak specyfikacja, którą dostałem, chce tego w treści (tj. W ciągu JSON zawartym w obiekt serializowany w treści POST).

garryp
źródło
Pamiętaj również, że nie wszystkie typy żądań powinny mieć treść, a jeśli chcesz zweryfikować żądanie bez treści, klucz musi znajdować się w nagłówku.
Whymarrh

Odpowiedzi:

11

W HTTP jest na to Authorizationnagłówek.

Chociaż zwykle służy do podawania danych uwierzytelniających użytkowników, w przypadku interfejsu API może zawierać identyfikator klienta i odpowiedni klucz interfejsu API.

Istnieje kilka korzyści:

  • Wsparcie z różnych ram. Wiele platform oczekuje Authorizationnagłówka w celu uwierzytelnienia. Nieużywanie go zmusi do napisania dodatkowego kodu, aby zasilić te frameworki wartościami niestandardowymi.

  • Wsparcie z różnych narzędzi. Na przykład CURL.

  • Mniej „WTF, gdzie mogę znaleźć / umieścić ten klucz API ?!” od nowych programistów dołączających do zespołu (lub programistów projektujących nowych klientów dla Twojego interfejsu API).

  • Następnie można użyć definicji kodów stanu HTTP, takich jak 401 Unauthorized, dla których :

    Odpowiedź MUSI zawierać pole nagłówka Uwierzytelnianie WWW [...] Klient MOŻE powtórzyć żądanie z odpowiednim polem nagłówka Autoryzacja.

Przeniesienie go do treści żądania może szybko stać się bolesne. Większość frameworków i narzędzi nie sprawia, że ​​dodawanie treści do żądania jest bardzo proste, co może utrudnić działanie interfejsu API.

Arseni Mourzenko
źródło