Trabajando en una API en este momento y solo quería reunir opiniones sobre dónde debería estar el mejor lugar para transmitir la clave API. Sé que no debe ir en la URL, esto deja el encabezado de la solicitud o el cuerpo del mensaje.
Si lo pongo en el encabezado, puedo encontrar un método genérico para extraerlo que se puede usar en todos los servicios, sin embargo, la especificación que me entregaron lo quiere en el cuerpo (es decir, en una cadena JSON incluida como parte de el objeto serializado en el cuerpo POST).
Respuestas:
En HTTP, hay un
Authorization
encabezado para eso.Si bien generalmente se usa para proporcionar las credenciales de los usuarios, en el caso de una API, puede contener la ID del cliente y la clave API correspondiente.
Hay varios beneficios:
Soporte de diferentes marcos. Muchos marcos esperarán
Authorization
encabezado para realizar la autenticación. No usarlo obligará a escribir código adicional para alimentar esos marcos con valores personalizados.Soporte de diferentes herramientas. Por ejemplo CURL.
Menos "WTF, ¿dónde encuentro / pongo esta clave API?" De nuevos desarrolladores que se unen al equipo (o desarrolladores que diseñan nuevos clientes para su API).
Luego puede usar definiciones de código de estado HTTP como
401 Unauthorized
, para las cuales :Moverlo al cuerpo de la solicitud puede volverse rápidamente doloroso. La mayoría de los marcos y herramientas no hacen que sea muy sencillo agregar un cuerpo a una solicitud, lo que puede hacer que su API sea más difícil de lo necesario.
fuente