Estou projetando uma API baseada em HTTP para um aplicativo de intranet. Sei que é uma preocupação muito pequena no grande esquema das coisas, mas: devo usar hífens, sublinhados ou camelCase para delimitar palavras nos URIs?
Aqui estão meus pensamentos iniciais:
camelCase
- possíveis problemas se o servidor não diferencia maiúsculas de minúsculas
- parece ter uso bastante difundido nas chaves de cadeia de caracteres de consulta ( http://api.example.com ? searchQuery = ...), mas não em outras partes do URI
Hífen
- esteticamente agradável do que as outras alternativas
- parece ser amplamente utilizado na parte do caminho do URI
- nunca vi uma chave de string de consulta hifenizada na natureza
- possivelmente melhor para SEO (isso pode ser um mito)
Sublinhado
- potencialmente mais fácil para as linguagens de programação manipularem
- várias APIs populares (Facebook, Netflix, StackExchange etc.) estão usando sublinhados em todas as partes do URI.
Estou inclinado a sublinhados de tudo. O fato de a maioria dos grandes players usá-los é convincente (consulte https://stackoverflow.com/a/608458/360570 ).
hyphenated query string in the wild
. Normalmente, é o momento do camelCase.Respostas:
Você deve usar hífens em um URL de aplicativo da Web rastreável. Por quê? Porque o hífen separa as palavras (para que um mecanismo de pesquisa possa indexar as palavras individuais) e não é um caractere de palavra . Sublinhado é um caractere de palavra, o que significa que deve ser considerado parte de uma palavra.
Clique duas vezes no Chrome: camelCase
Clique duas vezes no Chrome: under_score
Clique duas vezes no Chrome: hífen
Veja como o Chrome (eu ouço o Google também cria um mecanismo de pesquisa) só pensa que uma dessas são duas palavras?
camelCase
eunderscore
também exige que o usuário use a shiftchave, enquantohyphenated
isso não acontece.Portanto, se você deveria usar hífens em um aplicativo da Web rastreável, por que se incomodaria em fazer algo diferente em um aplicativo da intranet? Menos uma coisa para lembrar.
fonte
?event_id=1
ou?eventId=1
???A melhor prática padrão para APIs REST é ter um hífen , não camelcase ou sublinhados.
Isso vem do "Livro de Regras de Design da API REST da Mark Masse" da Oreilly.
Além disso, observe que o Stack Overflow em si usa hífens no URL:
.../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris
Assim como o WordPress: http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much-actually
fonte
Enquanto eu recomendar hífens, também postularemos uma resposta que não esteja na sua lista:
Nada mesmo
/quotationrequests/
,/purchaseorders/
e assim por diante.?q=foo+bar
fonte
Em geral, não terá um impacto suficiente para se preocupar, principalmente porque é um aplicativo de intranet e não um aplicativo de Internet de uso geral. Em particular, como é intranet , o SEO não é uma preocupação, pois sua intranet não deve estar acessível aos mecanismos de pesquisa. (e, se for, não é um aplicativo da intranet).
E qualquer estrutura que se preze já tem uma maneira padrão de fazer isso, ou é bastante fácil mudar a maneira como lida com componentes de URL com várias palavras, para que eu não me preocupasse muito com isso.
Dito isto, veja como vejo as várias opções:
Hífen
Sublinhado
CamelCase
/
qualquer forma . Se você achar que possui um componente de URL com mais de 2 "palavras", provavelmente deverá tentar encontrar um nome melhor para esse conceito.fonte
Resposta curta:
minúsculas com um hífen como separador
Resposta longa:
Qual é o objetivo de um URL?
Se apontar para um endereço é a resposta, um URL reduzido também está fazendo um bom trabalho. Se não facilitarmos a leitura e a manutenção, isso não ajudará desenvolvedores e mantenedores. Eles representam uma entidade no servidor e, portanto, devem ser nomeados logicamente.
O Google recomenda o uso de hífens
Vindo de um plano de programação, o camelCase é uma escolha popular para nomear palavras comuns.
Mas o RFC 3986 define URLs como diferencia maiúsculas de minúsculas para diferentes partes da URL. Como os URLs diferenciam maiúsculas de minúsculas, mantê-lo discreto (em letras minúsculas) é sempre seguro e considerado um bom padrão. Agora isso leva uma caixa de camelo pela janela.
Fonte: https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters
fonte
aqui está o melhor dos dois mundos.
Eu também "gosto" de sublinhar, além de todos os seus pontos positivos sobre eles, também há um certo estilo da velha escola neles.
Portanto, o que faço é usar sublinhados e simplesmente adicionar uma pequena regra de reescrita ao arquivo .htaccess do Apache para reescrever todos os sublinhados em hífens.
https://yoast.com/apache-rewrite-dash-underscore/
fonte