Các RESTful thiết kế URL khá là về hiển thị một tài nguyên dựa trên một cấu trúc (thư mục giống như cấu trúc, ngày: Sản phẩm / 2005/5/13, đối tượng và các thuộc tính của nó, ..), dấu gạch chéo /
chỉ ra cấu trúc phân cấp, sử dụng -id
để thay thế.
Cấu trúc phân cấp
Tôi thích cá nhân hơn:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
Nếu người dùng loại bỏ /car-id
phần đó, nó sẽ mang lại phần cars
xem trước - trực quan. Người dùng biết chính xác anh ta đang ở đâu trên cây, anh ta đang nhìn gì. Anh ta biết từ cái nhìn đầu tiên, rằng nhà để xe và xe hơi có quan hệ với nhau. /car-id
cũng biểu thị rằng nó thuộc về nhau không giống nhau /car/id
.
Đang tìm kiếm
Các tìm kiếm là OK vì nó là , chỉ có sở thích của bạn, những gì cần được tính đến. Phần hài hước xuất hiện khi tham gia tìm kiếm (xem bên dưới).
/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 &*
Hoặc về cơ bản bất cứ điều gì không phải là một dấu gạch chéo như đã giải thích ở trên.
Công thức : /cars[?;]color[=-:]blue[,;+&]
, * mặc dù tôi sẽ không sử dụng &
dấu hiệu vì nó không thể nhận ra từ văn bản trong cái nhìn đầu tiên.
** Bạn có biết rằng việc truyền đối tượng JSON trong URI là RESTful không? **
Danh sách các lựa chọn
/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
tính năng có thể?
Phủ định chuỗi tìm kiếm (!)
Để tìm kiếm bất kỳ chiếc xe nào, nhưng không phải màu đen và đỏ :
?color=!black,!red
color:(!black,!red)
Tìm kiếm đã tham gia
Tìm kiếm ô tô màu đỏ hoặc màu xanh hoặc đen với 3 cửa trong nhà để xe id 1..20 hoặc 101..103 hoặc 999 nhưng không phải 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
Bạn có thể tạo các truy vấn tìm kiếm phức tạp hơn. (Hãy xem kết hợp thuộc tính CSS3 để biết ý tưởng khớp với các chuỗi con. Ví dụ: tìm kiếm người dùng có chứa "thanh" user*=bar
.)
Phần kết luận
Dù sao, đây có thể là một phần quan trọng nhất đối với bạn, vì bạn có thể làm điều đó tuy nhiên bạn như sau khi tất cả, chỉ cần ghi nhớ rằng RESTful URI đại diện cho một cấu trúc đó là dễ hiểu ví dụ như thư mục giống như /directory/file
, /collection/node/item
, ngày /articles/{year}/{month}/{day}
.. Và khi bạn bỏ qua bất kỳ phân đoạn cuối cùng, bạn ngay lập tức biết những gì bạn nhận được.
Vì vậy, tất cả các ký tự này được cho phép không được mã hóa :
RFC 3986 xem 2.2
Mặc dù những gì tôi đã nói trước đây, đây là một sự phân biệt phổ biến của các đồng hồ đo, có nghĩa là một số " quan trọng" hơn những cái khác.
- ký hiệu chung:
:/?#[]@
- biểu đồ phụ:
!$&'()*+,;=
Đọc thêm:
Phân cấp: xem 2.3 , xem
cú pháp tham số đường dẫn url 1.2.3
thuộc tính CSS3 phù hợp với
IBM: RESTful Web services - Khái niệm cơ bản
Lưu ý: RFC 1738 đã được cập nhật bởi RFC 3986
/cars
và/car
không phải là ngữ nghĩa và do đó là một ý tưởng tồi. Luôn sử dụng số nhiều khi có nhiều hơn một mục trong danh mục đó.