Se ha dejado de lado una "dimensión" de este tema, pero es muy importante: hay momentos en que las "mejores prácticas" tienen que ponerse de acuerdo con la plataforma que estamos implementando o aumentando con las capacidades REST.
Ejemplo práctico:
En la actualidad, muchas aplicaciones web implementan la arquitectura MVC (Modelo, Vista, Controlador). Asumen que se proporciona una ruta estándar determinada, aún más cuando esas aplicaciones web vienen con la opción "Habilitar URL de SEO".
Solo por mencionar una aplicación web bastante famosa: una tienda de comercio electrónico OpenCart. Cuando el administrador habilita las "URL de SEO", espera que dichas URL vengan en un formato MVC bastante estándar como:
http://www.domain.tld/special-offers/list-all?limit=25
Dónde
special-offers
es el controlador MVC que procesará la URL (que muestra la página de ofertas especiales)
list-all
es la acción del controlador o el nombre de la función a llamar. (*)
limit = 25 es una opción, indicando que se mostrarán 25 elementos por página.
(*) list-all
es un nombre de función ficticio que utilicé para mayor claridad. En realidad, OpenCart y la mayoría de los marcos MVC tienen una función predeterminada, implícita (y generalmente omitida en la URL) index
que se llama cuando el usuario desea que se realice una acción predeterminada. Entonces la URL del mundo real sería:
http://www.domain.tld/special-offers?limit=25
Con una aplicación ahora bastante estándar o una estructura framework similar a la anterior, a menudo obtendrá un servidor web que está optimizado para ello, que reescribe las URL para él (la verdadera "URL no SEOed" sería:) http://www.domain.tld/index.php?route=special-offers/list-all&limit=25
.
Por lo tanto, usted, como desarrollador, debe enfrentarse a la infraestructura existente y adaptar sus "mejores prácticas", a menos que sea el administrador del sistema, sepa exactamente cómo modificar una configuración de reescritura de Apache / NGinx (¡esto último puede ser desagradable!) Y así en.
Por lo tanto, su API REST a menudo sería mucho mejor siguiendo los estándares de la aplicación web de referencia, tanto por su coherencia como por su facilidad / velocidad (y, por lo tanto, el ahorro de presupuesto).
Para volver al ejemplo práctico anterior, una API REST consistente sería algo con URL como:
http://www.domain.tld/api/special-offers-list?from=15&limit=25
o (URL no SEO)
http://www.domain.tld/index.php?route=api/special-offers-list?from=15&limit=25
con una mezcla de argumentos de "caminos formados" y argumentos de "consulta formada".