我对REST很新。我们所有的遗留Web服务都是基于SOAP的企业(ORACLE或DB2)数据库。我们现在转向REST / couchbase。
我们的团队正在研究实施复杂的查询方法。我们已经使用GET实现了简单的查询方法,例如GET返回所有条目,GET / 067e6162-3b6f-4ae2-a171-2470b63dff00将返回067e6162-3b6f-4ae2-a171-2470b63dff00的条目。
我们希望支持一种支持接收多个查询参数的查询方法,例如ID和日期范围列表。 Ids的数量可以达到几千个,因此我们意识到我们无法在GET HTTP头中传递这些查询参数,因为标头大小有限制。
我们开始考虑将查询参数传递给POST请求的JSON主体。例如,我们可以让客户端在几千个ID中作为数组传递并传入日期范围,因此我们将每个查询参数/过滤器作为一个对象。然后JSON主体将是一个对象数组。例如:
{
"action" : "search",
"queryParameters" : {
[
{
“operation”: “in”,
"key" : "name.of.attribute.Id",
"value" : "[{ "id: "067e6162-3b6f-4ae2-a171-2470b63dff00"}, {"id": "next id"....}],
},
{
“operation”: “greater”,
"key" : "name.of.attribute “,
"value" : "8/20/2016"
},
{
“operation”: “less”,
"key" : "name.of.attribute “,
"value" : "8/31/2016"
}
]
}
然后后端代码将接收POST并读取正文。它会看到动作是一个搜索,然后查找列表中属于日期范围> 1的ID列表中的任何条目。 2016年8月20日和< 2016年8月31日。
我一直试图在网上寻找有关如何最好地为复杂查询构建JSON主体的提示/最佳实践,但却找不到多少。所以任何提示,指导或建议都将不胜感激。
感谢。