O design do URL bonito RESTful é sobre a exibição de um recurso com base em uma estrutura (estrutura semelhante a diretório, data: articles / 2005/5/13, objeto e seus atributos, etc.), a barra /
indica a estrutura hierárquica, use o-id
lugar.
Estrutura hierárquica
Eu pessoalmente preferiria:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
Se um usuário remove a /car-id
peça, ela traz a cars
visualização - intuitiva. O usuário sabe exatamente onde está na árvore e para o que está olhando. Ele sabe desde o primeiro momento que garagens e carros estão relacionados. /car-id
também denota que ele pertence junto ao contrário /car/id
.
Procurando
A consulta de pesquisa está OK, pois existe apenas a sua preferência, o que deve ser levado em consideração. A parte engraçada vem ao ingressar nas pesquisas (veja abaixo).
/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 &*
Ou basicamente qualquer coisa que não seja uma barra, como explicado acima.
A fórmula:, /cars[?;]color[=-:]blue[,;+&]
* embora eu não usasse o &
sinal, pois é irreconhecível no texto à primeira vista.
** Você sabia que a passagem do objeto JSON no URI é RESTful? **
Listas de opções
/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
recursos possíveis?
Negar cadeias de pesquisa (!)
Para pesquisar carros, mas não em preto e vermelho :
?color=!black,!red
color:(!black,!red)
Pesquisas Cadastrado
Pesquisar vermelhos ou azuis ou pretas carros com 3 portas em id garagens 1..20 ou 101..103 ou 999 , mas não 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
Você pode então construir consultas de pesquisa mais complexas. (Veja a correspondência de atributo CSS3 para a ideia de correspondência de substrings. Por exemplo, pesquisando usuários que contenham "bar"user*=bar
.)
Conclusão
De qualquer forma, essa pode ser a parte mais importante para você, porque você pode fazer o que quiser, afinal, lembre-se de que o UEST RESTful representa uma estrutura que é facilmente compreendida /directory/file
, como /collection/node/item
datas de diretório , datas /articles/{year}/{month}/{day}
e quando você omitir em qualquer um dos últimos segmentos, você sabe imediatamente o que recebe.
Então .., todos esses caracteres são permitidos sem codificação :
- não reservado:
a-zA-Z0-9_.-~
normalmente permitido tanto codificado quanto não, ambos os usos são equivalentes.
- caracteres especiais:
$-_.+!*'(),
- reservado:
;/?:@=&
pode ser usado sem codificação para a finalidade que eles representam, caso contrário, eles devem ser codificados.
inseguro: <>"#%{}|\^~[]`
por que inseguro e por que deveria ser codificado: RFC 1738, consulte 2.2
Consulte também RFC 1738 # página-20 para obter mais classes de caracteres.
RFC 3986, ver 2.2.
Apesar do que eu disse anteriormente, aqui está uma distinção comum de delímetros, o que significa que alguns "são" mais importantes que outros.
- delímetros genéricos:
:/?#[]@
- subdelímetros:
!$&'()*+,;=
Mais leitura:
Hierarquia: consulte 2.3 , consulte 1.2.3
sintaxe do parâmetro do caminho da URL
Atributo CSS3 que corresponde a
IBM: Serviços da Web RESTful - Noções básicas
Nota: O RFC 1738 foi atualizado pelo RFC 3986
/cars
e/car
não é semântico e, portanto, uma má ideia. Sempre use o plural quando houver mais de um item nessa categoria.