Estoy diseñando una API basada en HTTP para una aplicación de intranet. Me doy cuenta de que es una preocupación bastante pequeña en el gran esquema de las cosas, pero: ¿debo usar guiones, guiones bajos o camelCase para delimitar palabras en los URI?
Aquí están mis pensamientos iniciales:
el caso de Carmel
- posibles problemas si el servidor no distingue entre mayúsculas y minúsculas
- parece tener un uso bastante extendido en las claves de cadena de consulta ( http://api.example.com ? searchQuery = ...), pero no en otras partes de URI
Guión
- más estéticamente agradable que las otras alternativas
- parece ser ampliamente utilizado en la porción de ruta de la URI
- clave de cadena de consulta con guión nunca vista en estado salvaje
- posiblemente mejor para SEO (esto puede ser un mito)
Guion bajo
- potencialmente más fácil de manejar para los lenguajes de programación
- varias API populares (Facebook, Netflix, StackExchange, etc.) utilizan guiones bajos en todas las partes del URI.
Me estoy inclinando hacia guiones bajos para todo. El hecho de que la mayoría de los grandes jugadores los estén usando es convincente (ver https://stackoverflow.com/a/608458/360570 ).
hyphenated query string in the wild
. Ese suele ser un momento para camelCase.Respuestas:
Debe usar guiones en una URL de aplicación web rastreable. ¿Por qué? Porque el guión separa las palabras (para que un motor de búsqueda pueda indexar las palabras individuales), y no es un carácter de palabra . El subrayado es un carácter de palabra, lo que significa que debe considerarse parte de una palabra.
Haga doble clic en Chrome: camelCase Haga
doble clic en Chrome: under_score Haga
doble clic en Chrome: guión
¿Ves cómo Chrome (escucho que Google también hace un motor de búsqueda) solo piensa que una de esas son dos palabras?
camelCase
yunderscore
también requiere que el usuario use la shiftclave, mientrashyphenated
que no lo hace.Entonces, si debe usar guiones en una aplicación web rastreable, ¿por qué molestarse en hacer algo diferente en una aplicación de intranet? Una cosa menos para recordar.
fuente
?event_id=1
o?eventId=1
???La mejor práctica estándar para las API REST es tener un guión , no camelcase o guiones bajos.
Esto viene del "Libro de reglas de diseño API REST" de Mark Masse de Oreilly.
Además, tenga en cuenta que Stack Overflow utiliza guiones en la URL:
.../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris
Al igual que WordPress: http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much-actually
fuente
Si bien recomiendo guiones, también postularé una respuesta que no está en su lista:
Nada en absoluto
/quotationrequests/
,/purchaseorders/
y así sucesivamente.?q=foo+bar
fuente
En general, no tendrá el impacto suficiente como para preocuparse, particularmente porque es una aplicación de intranet y no una aplicación de Internet de uso general. En particular, dado que es intranet , el SEO no es una preocupación, ya que su intranet no debería ser accesible para los motores de búsqueda. (y si lo es, no es una aplicación de intranet).
Y cualquier marco que valga la pena ya sea una forma predeterminada de hacer esto, o es bastante fácil cambiar la forma en que trata los componentes de URL de varias palabras, por lo que no me preocuparía demasiado.
Dicho esto, así es como veo las diversas opciones:
Guión
Guion bajo
El caso de Carmel
/
de todos modos . Si encuentra que tiene un componente de URL que tiene más de 2 "palabras" de largo, probablemente debería intentar encontrar un mejor nombre para ese concepto.fuente
Respuesta corta:
palabras en minúsculas con un guión como separador
Respuesta larga:
¿Cuál es el propósito de una URL?
Si apuntar a una dirección es la respuesta, entonces una URL acortada también está haciendo un buen trabajo. Si no lo hacemos fácil de leer y mantener, no ayudará a los desarrolladores y mantenedores por igual. Representan una entidad en el servidor, por lo que deben nombrarse lógicamente.
Google recomienda usar guiones
Viniendo de un fondo de programación, camelCase es una opción popular para nombrar palabras conjuntas.
Pero RFC 3986 define las URL como sensibles a mayúsculas y minúsculas para diferentes partes de la URL. Dado que las URL distinguen entre mayúsculas y minúsculas, mantenerlas discretas (en minúsculas) siempre es seguro y se considera un buen estándar. Ahora que saca un caso de camello por la ventana.
Fuente: https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters
fuente
Aquí está lo mejor de ambos mundos.
También me gusta "subrayar", además de todos sus puntos positivos sobre ellos, también hay un cierto estilo de la vieja escuela para ellos.
Entonces, lo que hago es usar guiones bajos y simplemente agregar una pequeña regla de reescritura al archivo .htaccess de Apache para volver a escribir todos los guiones bajos en guiones.
https://yoast.com/apache-rewrite-dash-underscore/
fuente