Una "dimensione" di questo argomento è stata lasciata fuori ma è molto importante: ci sono momenti in cui le "migliori pratiche" devono venire a patti con la piattaforma che stiamo implementando o aumentando con le capacità REST.
Esempio pratico:
Molte applicazioni web oggigiorno implementano l'architettura MVC (Model, View, Controller). Presumono che venga fornito un determinato percorso standard, tanto più quando tali applicazioni web dispongono di un'opzione "Abilita URL SEO".
Solo per citare un'applicazione web abbastanza famosa: un negozio di e-commerce OpenCart. Quando l'amministratore abilita gli "URL SEO", si aspetta che gli URL vengano in un formato MVC abbastanza standard come:
http://www.domain.tld/special-offers/list-all?limit=25
Dove
special-offers
è il controller MVC che deve elaborare l'URL (mostrando la pagina delle offerte speciali)
list-all
è l'azione del controller o il nome della funzione da chiamare. (*)
limite = 25 è un'opzione, che indica che verranno visualizzati 25 elementi per pagina.
(*) list-all
è un nome di funzione fittizia che ho usato per chiarezza. In realtà, OpenCart e la maggior parte dei framework MVC hanno una funzione predefinita, implicita (e generalmente omessa nell'URL) index
che viene chiamata quando l'utente desidera eseguire un'azione predefinita. Quindi l'URL del mondo reale sarebbe:
http://www.domain.tld/special-offers?limit=25
Con un'applicazione o una struttura frameworkd ora abbastanza standard simili a quelle sopra, spesso si ottiene un server Web ottimizzato per esso, che riscrive gli URL per esso (il vero "URL non SEO" sarebbe:) http://www.domain.tld/index.php?route=special-offers/list-all&limit=25
.
Pertanto, come sviluppatore, devi affrontare l'infrastruttura esistente e adattare le tue "migliori pratiche", a meno che tu non sia l'amministratore di sistema, sappi esattamente come modificare una configurazione di riscrittura di Apache / NGinx (quest'ultima può essere brutta!) E così su.
Pertanto, l'API REST sarebbe spesso molto meglio seguendo gli standard dell'applicazione Web di riferimento, sia per coerenza con esso che facilità / velocità (e quindi risparmio di budget).
Per tornare all'esempio pratico sopra, un'API REST coerente sarebbe qualcosa con URL come:
http://www.domain.tld/api/special-offers-list?from=15&limit=25
o (URL non SEO)
http://www.domain.tld/index.php?route=api/special-offers-list?from=15&limit=25
con una combinazione di argomenti "percorsi formati" e argomenti "query formata".