Chave da API - conteúdo ou cabeçalho


14

No momento, trabalhava em uma API e queria apenas reunir opiniões sobre onde deveria estar o melhor lugar para transmitir a chave da API. Eu sei que não deve ir no URL, isso deixa o cabeçalho da solicitação ou o corpo da mensagem.

Se eu colocá-lo no cabeçalho, posso criar um método genérico para retirá-lo que possa ser usado em todos os serviços, no entanto, as especificações que me foram entregues o desejam no corpo (por exemplo, em uma string JSON incluída como parte de o objeto serializado no corpo do POST).


Observe também que nem todos os tipos de solicitação devem ter um corpo e, se você deseja validar uma solicitação sem um corpo, a chave precisará estar no cabeçalho.
Whymarrh 29/05

Respostas:


11

No HTTP, existe um Authorizationcabeçalho para isso.

Embora geralmente seja usado para fornecer credenciais dos usuários, no caso de uma API, ele pode conter o ID do cliente e a chave da API correspondente.

Existem vários benefícios:

  • Suporte de diferentes estruturas. Muitas estruturas esperam Authorizationcabeçalho para fazer autenticação. O não uso forçará a gravação de código adicional para alimentar essas estruturas com valores personalizados.

  • Suporte de diferentes ferramentas. Por exemplo, CURL.

  • Menos “WTF onde eu encontro / coloco essa chave de API ?!” de novos desenvolvedores que se juntam à equipe (ou desenvolvedores que projetam novos clientes para sua API).

  • Você pode usar definições de código de status HTTP, como 401 Unauthorized, para as quais :

    A resposta DEVE incluir um campo de cabeçalho WWW-Authenticate [...] O cliente PODE repetir o pedido com um campo de cabeçalho de Autorização adequado.

Movê-lo para o corpo da solicitação pode se tornar rapidamente doloroso. A maioria das estruturas e ferramentas não torna muito simples adicionar um corpo a uma solicitação, o que pode tornar sua API mais difícil do que precisa.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.