Chiave API: nel contenuto o nell'intestazione

12

Lavorare su un'API al momento e volevo solo raccogliere opinioni su dove dovrebbe essere il posto migliore per trasmettere la chiave API. So che non dovrebbe andare nell'URL, questo lascia l'intestazione della richiesta o il corpo del messaggio.

Se lo metto nell'intestazione, posso inventare un metodo generico per estrarlo che può essere usato in tutti i servizi, tuttavia la specifica che ho ricevuto lo vuole nel corpo (cioè in una stringa JSON inclusa come parte dell'oggetto serializzato nel corpo POST).

    
posta garryp 27.04.2015 - 11:10
fonte

1 risposta

10

In HTTP, c'è un'intestazione Authorization per quello.

Mentre di solito viene utilizzato per fornire le credenziali degli utenti, nel caso di un'API, può contenere l'ID del client e la chiave API corrispondente.

Ci sono diversi vantaggi:

  • Supporto da diversi framework. Molti framework prevedono Authorization di intestazione per fare l'autenticazione. Non utilizzarlo costringerà a scrivere codice aggiuntivo per alimentare quei framework con valori personalizzati.

  • Supporto da diversi strumenti. Ad esempio CURL.

  • Meno "WTF dove trovo / inserisco questa chiave API ?!" dai nuovi sviluppatori che si uniscono al team (o agli sviluppatori che progettano nuovi client per la tua API).

  • Puoi quindi utilizzare le definizioni del codice di stato HTTP come 401 Unauthorized , per cui :

    The response MUST include a WWW-Authenticate header field [...] The client MAY repeat the request with a suitable Authorization header field.

Spostarlo nel corpo della richiesta può diventare rapidamente doloroso. La maggior parte dei framework e degli strumenti non rende molto semplice aggiungere un corpo a una richiesta, il che potrebbe rendere la tua API più difficile di quanto non sia necessario.

    
risposta data 27.04.2015 - 12:56
fonte

Leggi altre domande sui tag