Một endpoint danh sách thực tế thường thực hiện theo thứ tự: filter → sort → paginate.
Cho danh sách bản ghi và một query gồm:
filter: { "field", "op", "value" } với op ∈ { "eq","gt","gte","lt","lte" } (có thể là null → bỏ lọc)sort: { "field", "dir" } với dir ∈ { "asc","desc" } (có thể là null → giữ thứ tự gốc)page, perPage: phân trang (page từ 1)Hãy áp dụng lần lượt và in ra { "total": <số bản ghi sau filter>, "data": [...trang...] }. Sort phải ổn định.
Lọc price ≥ 50, sort price asc, lấy trang 1 perPage 2.
Dòng 1: JSON mảng bản ghi.
Dòng 2: JSON object query gồm filter, sort, page, perPage.
0 ≤ số bản ghi ≤ 1000; 1 ≤ page; 1 ≤ perPage ≤ 1000.
In object JSON { "total": ..., "data": [...] }. total là số bản ghi sau khi filter (trước phân trang).
Ví dụ:
Đầu vào:
[{"name":"a","price":50},{"name":"b","price":30},{"name":"c","price":80},{"name":"d","price":60}]
{"filter":{"field":"price","op":"gte","value":50},"sort":{"field":"price","dir":"asc"},"page":1,"perPage":2}
Đầu ra:
{"total":3,"data":[{"name":"a","price":50},{"name":"d","price":60}]}Giải thích:
Đang tải editor...