Projekt RESTful pretty URL polega na wyświetlaniu zasobu opartego na strukturze (struktura katalogowa, data: artykuły / 2005/5/13, obiekt i jego atrybuty, ..), ukośnik /
wskazuje strukturę hierarchiczną, -id
zamiast tego użyj .
Struktura hierarchiczna
Osobiście wolałbym:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
Jeśli użytkownik usunie /car-id
część, wyświetla cars
podgląd - intuicyjny. Użytkownik dokładnie wie, gdzie jest na drzewie, na co patrzy. Od pierwszego spojrzenia wie, że garaże i samochody są ze sobą powiązane. /car-id
oznacza również, że należy do siebie w przeciwieństwie do /car/id
.
Badawczy
Wyszukiwanie jest w porządku , ponieważ jest tylko twoje preferencje, co należy wziąć pod uwagę. Zabawne jest to, że dołączasz do wyszukiwania (patrz poniżej).
/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 &*
Lub w zasadzie wszystko, co nie jest cięciem, jak wyjaśniono powyżej.
Formuła:, /cars[?;]color[=-:]blue[,;+&]
* chociaż nie użyłbym &
znaku, ponieważ na pierwszy rzut oka nie można go rozpoznać po tekście.
** Czy wiesz, że przekazanie obiektu JSON w URI jest RESTful? **
Listy opcji
/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
możliwe funkcje?
Neguj ciągi wyszukiwania (!)
Aby wyszukać dowolne samochody, ale nie czarne i czerwone :
?color=!black,!red
color:(!black,!red)
Wyszukiwania Dołączył
Szukaj czerwone lub niebieskie lub czarne samochody z 3 bram w garażach id 1..20 lub 101..103 lub 999 , ale nie 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
Następnie można skonstruować bardziej złożonych zapytań. (Spójrz na dopasowanie atrybutów CSS3 pod kątem idei dopasowania podciągów. Np. Wyszukiwanie użytkowników zawierających „słupek” user*=bar
.)
Wniosek
W każdym razie, to może być najważniejszą częścią dla ciebie, ponieważ można to zrobić jak chcesz po wszystkim, po prostu pamiętać, że relaksującego URI oznacza strukturę, która jest łatwo zrozumiałe, np katalog podobny /directory/file
, /collection/node/item
, daty /articles/{year}/{month}/{day}
.. A jeśli pominąć którykolwiek z ostatnich segmentów, od razu wiesz, co dostajesz.
Więc ... wszystkie te znaki są dozwolone niekodowane :
- bez zastrzeżeń:
a-zA-Z0-9_.-~
zazwyczaj dozwolone zarówno zakodowane, jak i nie, oba zastosowania są wtedy równoważne.
- znaki specjalne:
$-_.+!*'(),
- zastrzeżone:
;/?:@=&
Mogą być używane niezakodowane do celów, które reprezentują, w przeciwnym razie muszą zostać zakodowane.
niebezpieczne: <>"#%{}|\^~[]`
Dlaczego niebezpieczne i dlaczego należy raczej zakodować: RFC 1738 patrz 2.2
Zobacz także RFC 1738 # strona-20, aby uzyskać więcej klas postaci.
RFC 3986 patrz 2.2
Pomimo tego, co powiedziałem wcześniej, tutaj jest wspólne rozróżnienie delimetrów, co oznacza, że niektóre „są” ważniejsze niż inne.
- ogólne delimetry:
:/?#[]@
- sub-delimetry:
!$&'()*+,;=
Więcej lektur:
Hierarchia: patrz 2.3 , patrz 1.2.3
składnia parametru ścieżki adresu URL
atrybut CSS3 zgodny z
IBM: RESTful Web Services - podstawy
Uwaga: RFC 1738 został zaktualizowany przez RFC 3986
/cars
i/car
nie jest semantyczne i dlatego jest to zły pomysł. Zawsze używaj liczby mnogiej, jeśli w tej kategorii jest więcej niż jeden element.