Uma "dimensão" deste tópico foi deixada de fora, mas é muito importante: há momentos em que as "melhores práticas" precisam entrar em acordo com a plataforma que estamos implementando ou aprimorando com os recursos REST.
Exemplo prático:
Atualmente, muitos aplicativos da web implementam a arquitetura MVC (Model, View, Controller). Eles assumem que um determinado caminho padrão é fornecido, ainda mais quando esses aplicativos da Web vêm com a opção "Ativar URLs de SEO".
Apenas para mencionar um aplicativo da Web bastante famoso: uma loja de comércio eletrônico OpenCart. Quando o administrador ativa os "URLs de SEO", espera que esses URLs cheguem em um formato MVC bastante padrão, como:
http://www.domain.tld/special-offers/list-all?limit=25
Onde
special-offers
é o controlador MVC que deve processar o URL (mostrando a página de ofertas especiais)
list-all
é o nome da ação ou função do controlador a ser chamado. (*)
limite = 25 é uma opção, informando que 25 itens serão mostrados por página.
(*) list-all
é um nome de função fictício que usei para maior clareza. Na realidade, o OpenCart e a maioria das estruturas MVC têm uma função implícita (e geralmente omitida na URL) index
padrão que é chamada quando o usuário deseja que uma ação padrão seja executada. Portanto, o URL do mundo real seria:
http://www.domain.tld/special-offers?limit=25
Com um aplicativo agora bastante padrão ou uma estrutura de estrutura semelhante à acima, você geralmente obtém um servidor da Web otimizado para isso, que reescreve os URLs para ele (o verdadeiro "URL sem SEO" seria:) http://www.domain.tld/index.php?route=special-offers/list-all&limit=25
.
Portanto, como desenvolvedor, você deve lidar com a infraestrutura existente e adaptar suas "melhores práticas", a menos que seja o administrador do sistema, saiba exatamente como ajustar uma configuração de reescrita do Apache / NGinx (a última pode ser desagradável!) E assim em.
Portanto, sua API REST geralmente seria muito melhor seguindo os padrões do aplicativo da Web de referência, tanto para consistência com ele quanto para facilidade / velocidade (e, portanto, economia de orçamento).
Para voltar ao exemplo prático acima, uma API REST consistente seria algo com URLs como:
http://www.domain.tld/api/special-offers-list?from=15&limit=25
ou (URLs não SEO)
http://www.domain.tld/index.php?route=api/special-offers-list?from=15&limit=25
com uma mistura de argumentos "caminhos formados" e argumentos "formados por consulta".