我有一个客户端的搜索格式,需要在服务器控制器上翻译为:
Item.find(search)
.limit(limit).skip(skip)
.exec(function(err, items)
{return return res.jsonp(items); });
其中:
search = {"tiltle" : new RegExp(<some_token>, "i"),
"price" : {"$lt" : <price_limit>},
"labels" : {"$in" : <labels_list>} }
limit = <limit_pagination>
skip = <skip_pagination>
所有<x>
变量都应来自客户端。
我可以为上述搜索查询定义哪个API?
将所有变量作为url查询参数:
GET /items?skip=100&limit=50&pricelt=50&labels=ONE,TWO&title=titl
但是将每个字段添加到url似乎不是通用解决方案(客户端控制器和服务器控制器都必须指定这些字段)。
为搜索创建单独的POST查询:
POST /items/search?skip=100&limit=50
{"title" : new RegExp("titl", "i"),
"price" : {"$lt" : 50},
"labels" : {"$in" : ["ONE","TWO"]} }
这似乎打破了RESTful apis的简单性。 (无法覆盖POST /items
因为它是为创建项目而保留的。
使用正文获取请求:
GET /items?skip=100&limit=50
{"title" : new RegExp("titl", "i"),
"price" : {"$lt" : 50},
"labels" : {"$in" : ["ONE","TWO"]} }