Một tùy chọn sẽ là thêm tham số truy vấn bổ sung như gradeOperator
, trong đó bạn có thể chuyển toán tử được sử dụng khi so sánh giá trị với thông số grade
. Ví dụ:
GET /students?grade=8&gradeOperator=!%3D
!%3D
là hình thức URL-encoded của !=
, vì vậy REST API của bạn sẽ de-mã hóa các nhà điều hành và giải thích điều này như grade != 8
.
Một cách tiếp cận khác là chuyển giá trị và toán tử trong phần thân yêu cầu HTTP. Một cái gì đó như thế này có khả năng sẽ làm việc (với cơ thể được cung cấp trong JSON là một ví dụ):
GET /students
Content-Type: application/json
{ "grade": {"value": 8, "operator": "!=" } }
Đó có thể thoải mái vì bạn sẽ không phải lặp lại từ 'lớp' trong gradeOperator
, các nhà điều hành chỉ đơn giản là lồng nhau bên trong một đối tượng JSON làm giá trị của grade
.
Trong cả hai giải pháp, bạn có khả năng có thể xác định bất kỳ số lượng các nhà khai thác, bao gồm <
, >
, >=
, <=
vv Chỉ cần chắc chắn để khử trùng đúng cách bất kỳ nhà khai thác đầu vào API của bạn nhận được, đặc biệt nếu sử dụng trong một truy vấn DB, để tránh những thứ như SQL injection tấn công.
Nguồn
2013-02-28 07:33:29
kiểm tra nếu liên kết này là hữu ích http://stackoverflow.com/questions/4614255/rest-url-design-for-greater-than-less-than-operations – rvini
Tuy nhiên, nó nói thêm về pagination –