La URL indica el recurso en sí. Un "cliente" es un recurso sobre el que se puede actuar, por lo que debe formar parte de la url base: /orders/view/client/23
.
Los parámetros son solo eso, para parametrizar el acceso al recurso. Esto especialmente entra en juego con publicaciones y búsquedas: /orders/find?q=blahblah&sort=foo
. Hay una línea muy fina entre los parámetros y los sub recursos: /orders/view/client/23/active versus /orders/view/client/23?show=active
. Recomiendo el estilo de los recursos secundarios y los parámetros de reserva para las búsquedas.
Dado que cada punto final REpresenta una Transferencia de estado (para modificar la regla mnemotécnica), los encabezados personalizados solo deben usarse para elementos que no incluyen el nombre del recurso (la url), el estado del recurso (el cuerpo) , o parámetros que afectan directamente al recurso (parámetros). Eso deja verdaderos metadatos sobre la solicitud de encabezados personalizados.
HTTP tiene una selección muy amplia de encabezados que cubren casi todo lo que necesita. Donde he visto encabezados personalizados aparece en una solicitud de sistema a sistema que funciona en nombre de un usuario. El sistema proxy validará al usuario y agregará "X-User: userid
" a los encabezados y usará las credenciales del sistema para llegar al punto final. El sistema de recepción valida que las credenciales del sistema están autorizadas para actuar en nombre del usuario, y luego valida que el usuario esté autorizado para realizar la acción.
¡Gracias por una respuesta tan completa! ¿Seguirías usando el X-User para una API móvil donde el riesgo de tener un proxy malvado (que se deshace del encabezado) todavía es alto? –
No, el uso de X-User que mencioné se encuentra en las conexiones de sistema a sistema donde el sistema actúa en nombre de un tercero. Por ejemplo, el Usuario U habla con el Servidor A. El Servidor A presenta las credenciales al Servidor B con un encabezado X-Usuario para decir "Usar mis credenciales para verificar que estoy autorizado a realizar esta acción en nombre del Usuario U". Esto aparece en Arquitecturas Orientadas a Servicios, y generalmente estás usando HTTPS. Una plataforma móvil casi siempre debe ser el propio Usuario que actúa, y usa las credenciales de primera persona apropiadas para la transacción. – Nialscorva
El tercer párrafo es una de las respuestas más informativas que he leído en SO ;-) – Alistair77