Hífen, sublinhado ou camelCase como delimitador de palavras em URIs?

477

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 ).

Josh Johnson
fonte
De tudo o que li, você deve usar hífens , mas os sublinhados parecem mais fáceis de gerenciar.
precisa saber é o seguinte
1
Acredito que os hífens foram, ao mesmo tempo, melhores para fins de SEO. Isso pode não ser verdade agora, mas tantas pessoas adotaram que é mais amplamente aceito como melhor prática. Os sublinhados, por outro lado, podem ser mais fáceis de lidar na programação de back-end. Eu uso PHP, por isso é muito mais fácil usar um sublinhado para um nome de função do que um hífen. O camelCase pode ser o mais fácil de implementar, mas a leitura geralmente é difícil. Finalmente, acho que você estava certo quando disse que nunca vê hyphenated query string in the wild. Normalmente, é o momento do camelCase.
ServAce85
De acordo com esta pergunta, o sublinhado não é uma opção válida: stackoverflow.com/questions/3641722/…
wytten
Você mencionou APIs populares, gostaria de adicionar uma: Google. Até onde eu vi, o Google não usa nada entre as palavras (consulte a API de matriz de distância do Google Maps, por exemplo).
nbeuchat

Respostas:

473

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?

camelCasee underscoretambém exige que o usuário use a shiftchave, enquanto hyphenatedisso 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.

Neil McGuigan
fonte
20
Meu Firefox 24 no Windows 7 acha que 'hífen' é duas palavras.
Marcel Stör
9
e se comporta da mesma forma para 'under_score'.
Marcel Stör
18
qualquer convenção para o queryString, por exemplo ?event_id=1ou ?eventId=1???
usar o seguinte comando
8
@ user2727195 Embora os URLs façam distinção entre maiúsculas e minúsculas, a melhor prática é usar letras minúsculas sempre que possível, pois isso remove a possibilidade de digitação incorreta.
Nicholas Shanks
7
Resposta interativa :)
wild_nothing
210

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

Al Sweigart
fonte
3
Se você observar o capítulo sobre diretrizes de cadeia de consulta no Livro de Regras de Design da API REST, notará que as diretrizes variam de acordo com a parte da regra. Não há uma regra explícita sobre o uso de maiúsculas e minúsculas nas cadeias de consulta, mas você encontrará todos os exemplos na seção cadeias de consulta de que todas as chaves estão em maiúsculas e minúsculas.
22615 Michael LangJul
1
Apenas o FYI - "REST API Design Rulebook" foi publicado em outubro de 2011. É possível que as coisas tenham mudado nos últimos 8 anos.
ChrisN
25

Enquanto eu recomendar hífens, também postularemos uma resposta que não esteja na sua lista:

Nada mesmo

  • API da minha empresa tem URIs como /quotationrequests/, /purchaseorders/e assim por diante.
  • Apesar de você dizer que era um aplicativo de intranet, você listou o SEO como um benefício. O Google corresponde ao padrão / foobar / em um URL para uma consulta de?q=foo+bar
  • Eu realmente espero que você não considere executar uma chamada PHP para qualquer sequência arbitrária que o usuário passe para a barra de endereços, como sugere @ ServAce85!
Nicholas Shanks
fonte
+1 por apontar uma escolha óbvia. Também desambigua / quotationrequests / de / quoteation / orders /.
Josh Petitt #
34
O que é ruim nessa resposta é que, de uma perspectiva de SEO, não há como uma máquina entender onde uma palavra termina e outra começa, para que essas informações sejam perdidas. Também é difícil para leitores humanos também. É melhor ter alguns separadores no nível da palavra do que nada.
Al Sweigart 28/05
3
O @AlSweigart SEO não é relevante, pois é um aplicativo de intranet atrás de uma parede de login.
Nicholas Shanks #
2
Concordo com @ niel-mcguigan que, mesmo sendo um aplicativo de intranet, se você usa hífens em todos os lugares, é menos uma coisa para se lembrar.
Tirou Goodwin
2
@DrewGoodwin Fair suficiente. Embora note que eu disse "postular", não "recomendar" :-) E os domínios geralmente não têm hífens, portanto, usá-los em caminhos já é mais uma coisa a ser lembrada.
Nicholas Shanks
18

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

  • O maior perigo para os hífens é que o mesmo caractere (normalmente) também é usado para subtração e negação numérica (isto é, negativo ou negativo ).
  • Hífens sentir desconfortável em componentes de URL. Eles parecem fazer sentido apenas no final de um URL para separar as palavras no título de um artigo. Ou, por exemplo, o título de uma pergunta Stack Overflow adicionada ao final de um URL para fins de SEO e de clareza do usuário.

Sublinhado

  • Novamente, eles se sentem errados nos componentes de URL. Eles interrompem o fluxo (e a beleza / simplicidade) de uma URL, pois adicionam essencialmente um espaço aparente grande e pesado no meio de uma URL limpa e fluida.
  • Eles tendem a se misturar com os sublinhados. Se você espera que seus usuários copiem e colem seus URLs no MS Word ou em outros programas de edição de texto semelhantes, ou em qualquer outro lugar que possa pegar um URL e estilizá-lo com um sublinhado (como os links tradicionalmente são), convém evite sublinhados como separadores de palavras. Particularmente quando impresso, um URL sublinhado com sublinhados tende a parecer que possui espaços em vez de sublinhados.

CamelCase

  • De longe, o meu favorito, pois faz com que os URLs pareçam fluir melhor e não apresenta nenhuma das falhas das duas opções anteriores.
  • Pode ser um pouco mais difícil de ler para pessoas que têm dificuldade em diferenciar maiúsculas de minúsculas, mas isso não deve ser um problema para um URL, porque a maioria das "palavras" deve ser um componente de URL e estar separada por /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.
  • Ele faz ter um possível problema com maiúsculas e minúsculas, mas a maioria das plataformas pode ser ajustado para ser maiúsculas de minúsculas ou maiúsculas e minúsculas. Qualquer um só é realmente um problema para 2 casos: a.) Humanos digitando a URL eb) Programadores (já que não somos humanos) digitando a URL. Erros de digitação sempre são um problema, independentemente da distinção entre maiúsculas e minúsculas. não é diferente de todos os casos.
cdeszaq
fonte
13
Discordo. Veja SO, veja todos os sites wordpress, veja a maioria dos sites de notícias, todos usam hífens. Também caso de camelo mistura casos, a web deve ser tudo em minúsculas na minha opinião.
Fabien Warniez 11/11
4
Na minha opinião, a web não diferencia maiúsculas de minúsculas, na verdade. Em relação à convenção, se você seguir a abordagem de rotas RoR (ruby on trails), usará sublinhados. Normalmente, faço isso para mantê-lo consistente entre as rotas geradas pelos trilhos e minhas rotas nomeadas. No entanto, acho que, para mim, o traço é melhor que os sublinhados.
Rpbaltazar # 24/15
1
Talvez eles tenham um mecanismo de pesquisa interno em sua intranet?
Juha Untinen
3
Discordo. Ambos os seus argumentos contra hífens são falhos. Não há perigo de negação ou subtração porque estamos falando da parte do nome de uma tupla aqui, você nunca deve estar funcionando ou avaliando a parte do nome de uma tupla em matemática ou negação. Também não há nada de estranho em usar hífens em URIs, pois é uma prática recomendada de longa data usada por uma escassez de sites bem estabelecidos. Eles também não precisam pressionar a tecla Shift e são tratados como limites de palavras por praticamente todos.
tpartee
2
Desde que me lembro, os hífens têm sido a norma muito usada nos URLs e são definitivamente considerados as melhores práticas nos padrões atuais. Não usá-los porque a sensação estranha me parece estranha.
Pistol-pete #
2

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

Considere usar pontuação nos seus URLs. O URL http://www.example.com/green-dress.html é muito mais útil para nós do que http://www.example.com/greendress.html . Recomendamos que você use hífens (-) em vez de sublinhados (_) em seus URLs.

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

Classificador
fonte
-1

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/

user2597538
fonte