El diseño de URL bonita RESTful se trata de mostrar un recurso basado en una estructura (estructura similar a un directorio, fecha: artículos / 2005/5/13, objeto y sus atributos, ..), la barra /
indica la estructura jerárquica, use el-id
lugar.
Estructura jerarquica
Yo personalmente preferiría:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
Si un usuario elimina la /car-id
pieza, trae la cars
vista previa, intuitiva. El usuario sabe exactamente en qué parte del árbol está, qué está mirando. Él sabe desde el primer vistazo, que los garajes y los automóviles están en relación. /car-id
También denota que pertenece junto a diferencia /car/id
.
buscando
La búsqueda está bien tal como está , solo existe su preferencia, lo que debe tenerse en cuenta. La parte divertida viene cuando se unen búsquedas (ver más abajo).
/cars?color=blue;type=sedan #most prefered by me
/cars;color-blue+doors-4+type-sedan #looks good when using car-id
/cars?color=blue&doors=4&type=sedan #I don't recommend using &*
O básicamente cualquier cosa que no sea una barra como se explicó anteriormente.
La fórmula:, /cars[?;]color[=-:]blue[,;+&]
* aunque no usaría el &
signo ya que es irreconocible del texto a primera vista.
** ¿Sabías que pasar un objeto JSON en URI es RESTful? ** **
Listas de opciones
/cars?color=black,blue,red;doors=3,5;type=sedan #most prefered by me
/cars?color:black:blue:red;doors:3:5;type:sedan
/cars?color(black,blue,red);doors(3,5);type(sedan) #does not look bad at all
/cars?color:(black,blue,red);doors:(3,5);type:sedan #little difference
posibles características?
Negar cadenas de búsqueda (!)
Para buscar cualquier automóvil, pero no negro y rojo :
?color=!black,!red
color:(!black,!red)
Búsquedas unidas
Búsqueda rojos o azules o negras coches con 3 puertas de garajes Identificación 1..20 o 101..103 o 999 , pero no 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
a continuación, usted puede construir más complejas consultas de búsqueda. (Observe la coincidencia de atributos CSS3 para la idea de hacer coincidir subcadenas. Por ejemplo, buscar usuarios que contengan "barra" user*=bar
).
Conclusión
De todos modos, esta podría ser la parte más importante para usted, porque usted puede hacerlo sin embargo te gusta después de todo, sólo tener en cuenta que REST URI representa una estructura que es fácil de entender por ejemplo directory-como /directory/file
, /collection/node/item
, fechas/articles/{year}/{month}/{day}
.. Y cuando se omite cualquiera de los últimos segmentos, inmediatamente sabes lo que obtienes.
Entonces, todos estos caracteres están permitidos sin codificar :
RFC 3986 ver 2.2
A pesar de lo que dije anteriormente, aquí hay una distinción común de delimitadores, lo que significa que algunos "son" más importantes que otros.
- delimitadores genéricos:
:/?#[]@
- subdelímetros:
!$&'()*+,;=
Más información:
Jerarquía: consulte 2.3 , consulte 1.2.3
sintaxis de parámetro de ruta de URL url que
coincide con el atributo CSS3
IBM: servicios web RESTful - Aspectos básicos
Nota: RFC 1738 fue actualizado por RFC 3986
/cars
y/car
no es semántica y por lo tanto una mala idea. Utilice siempre el plural cuando haya más de un elemento en esa categoría.