Việc xác định phép chiếu cho truy vấn REST GET có vi phạm nguyên tắc REST và/hoặc đó có phải là thực hành tốt không ??
Hãy xem xét api như /person?fields=fname,lname, address
, điều này có thể do người đó là người mẫu lớn và yêu cầu hiện tại của tôi chỉ yêu cầu giá trị của các trường nhất định (nói rằng tôi đang tạo lưới UI)Chỉ định phép chiếu cho truy vấn REST GET
Trả lời
Hoàn toàn ổn định nếu tài nguyên hiện tại không hỗ trợ những gì bạn muốn. Đó chính là cách REST hoạt động.
Vì vậy, trong trường hợp của bạn, định nghĩa URI /person?fields=fname,lname, address
hoàn toàn hợp lệ.
Lưu ý rằng cấu trúc URI không quan trọng, bạn phải cung cấp liên kết tới khách hàng ở nơi bạn mô tả mẫu URI và các biến. Vì vậy, bạn phải trả lại một cái gì đó liên kết như thế này (hư cấu dạng JSON hypermedia):
{
"_links": {
"/meta/person/list": {
"href": "/person{?fields}",
"vars": {
"fields": {
"required": false,
"composition": [
"fname": {
"meta": "/meta/person/fname"
},
"lname": {
"meta": "/meta/person/lname"
},
"address": {
"meta": "/meta/person/address",
"alternatives": {
"href": "/locations",
"meta": "/meta/locations"
}
}
]
}
}
}
}
}
Trong nơi /meta
mô tả các loại và nhãn của mỗi params:
GET/meta/người/fname
{
"type": "string",
"label": "First name",
"_links": {
"self": {
"href": "/meta/person/fname"
}
}
}
ofc. di chuyển đầu tiên của bạn với khách hàng nên nhận được toàn bộ meta hoặc ít nhất là các phần được sử dụng thường xuyên nhất của nó. Bằng cách xử lý liên kết, máy khách phải có khả năng hiểu mô tả meta và định dạng JSON siêu văn bản đặc biệt này. Cấu trúc URI hoàn toàn không liên quan, nó chỉ nên sử dụng meta để hiểu liên kết là gì và cách sử dụng nó.
Rất tiếc, chúng tôi không có chuẩn ở thời điểm hiện tại về cách mô tả các liên kết trong phản hồi JSON. Có các định dạng siêu văn bản như Hydra + Json-LD, HAL, HyperSchema, v.v ... Nhưng ngoại lệ. không ai trong số họ là một tiêu chuẩn được nêu ra. (Có thể là từ vựng Hydra RDF là gần nhất để trở thành một, nhưng nó chắc chắn không phải là sản phẩm đã sẵn sàng. Json-LD đã là một cách tiêu chuẩn để đại diện cho RDF.)
Bây giờ nếu nó được mã hóa cứng vào khách hàng của bạn cách xây dựng URI và ý nghĩa của nó, thì đó không phải là một máy khách REST, vì loại dịch vụ/khách hàng này vi phạm ràng buộc của uniform interface/HATEOAS của REST. Ofc. ngày nay ppl. gọi mọi thứ như REST, RESTful, API, ngay cả khi họ chỉ biết nhiều đến Jon Snow về chủ đề này. Btw. không có bi kịch nếu bạn không muốn triển khai ứng dụng web của mình theo cách REST, nó chỉ phụ thuộc vào yêu cầu của bạn. Ví dụ: nếu ứng dụng của bạn sẽ không có nhiều người dùng và nhà phát triển bên thứ ba thì rất có thể bạn sẽ không chọn con đường nào.
- 1. REST và GET ... lại
- 2. Truy vấn nâng cao trong REST
- 3. Truy vấn Hibernate theo Ví dụ và Phép chiếu
- 4. Hai phương thức GET với các tham số truy vấn khác nhau: REST
- 5. RestKit truy vấn tham số GET
- 6. GET và POST trong REST Web Service
- 7. Truy vấn API REST Salesforce Hơn 2000
- 8. Truy vấn REST phân tích cú pháp trong C++
- 9. Chỉ cho phép hộ chiếu đã xác thực người dùng truy cập trang được bảo vệ
- 10. jquery get chuỗi truy vấn từ URL
- 11. Truy vấn tìm kiếm REST và phức tạp
- 12. Đi qua mảng trong GET cho một cuộc gọi REST
- 13. Loại chỉ mục nào lý tưởng cho truy vấn này?
- 14. Entity Framework - truy vấn chỉ định loại được thừa kế cho thuộc tính điều hướng
- 15. Chỉ định giá trị mặc định cho loại tham chiếu
- 16. Phép chiếu trong NHibernate
- 17. REST của URI mẫu cho hoạt động truy vấn và Command
- 18. mod_rewrite chỉ trên GET
- 19. Cách thiết kế REST URI cho nhiều tham số khóa-giá trị của HTTP GET
- 20. REST API: GET request with body
- 21. Lấy mảng làm tham số truy vấn GET trong Python
- 22. Cách chỉ định trường truy vấn cha mẹ từ trong truy vấn phụ trong mySQL?
- 23. Phép trừ giữa hai truy vấn sql
- 24. Mysql: cho phép truy vấn trên cột không thể truy cập khác?
- 25. Truy cập-điều khiển-cho phép-xuất xứ angular.js chrome
- 26. Truy vấn Solr mà không chỉ định tên trường
- 27. Truy vấn tập hợp SQL cho SUM, nhưng chỉ cho phép số tiền dương (nếu không 0)
- 28. Robots.txt: chỉ cho phép SE chính
- 29. yêu cầu http 'get' của node.js http 'get' với tham số chuỗi truy vấn
- 30. Chỉ định đối số tham chiếu cho biến cục bộ
Đó là một thực hành rất tốt, nó tốt hơn nhiều so với việc gửi lại các đối tượng khổng lồ trên mọi yêu cầu. –