我正在设计具有各种属性的Product
搜索的SpringBoot
RESTful API
(搜索可以是一个或多个(。很少有标准大于一定数量,很少有小于一定的标准。在@RequestParam
中,我们可以采用字符串或类似值,但不能采用任何条件。
我的问题是,在GET
搜索API调用
@GetMapping("/search")
public ResponseEntity<List<OrderView>> searchOrders(...)
{
...
// call to service implementation
...
}
嗯... https://spring.io/guides/tutorials/bookmarks/对带有Spring的休息服务有很好的描述。它还具有有关恢复原则的不同级别的描述(您可以使用HAL的Spring-boot非常简单又聪明(。
进行搜索时,您没有资源(Level1(URL,但您想获得它...因此(IMHO(可以进行简单的查询参数调用。例如,在查看Amazon.com并在那里键入一些搜索参数时,您会看到它们正在使用一种简单的方法:
https://www.amazon.de/s/ref=nb_sb_noss?....&url=search-alias%3Daps&field-keywords=criteria1+criteria2+criteria3
他们只是将关键字添加为串联字符串。
Apigee还有一个有趣的博客条目:https://apigee.com/about/blog/technology/restful-api-design-tips-search
在本文中春季启动:如何设计有效的REST API?,我解释了如何开发REST API进行搜索。例如,您在本文中找到了Postman的代码和屏幕截图。
作为一个端点的优化,我可以得到几个结果:资源是分类,过滤和分页的。
您不处理很多代码(查看查询参数和控制器中的所有控件(:库 specification-arg-resolver noter
我建议现有工具之一是您需要搜索/过滤。我为此使用SpringFilter。配置非常容易,非常强大,还有一个好处是,有现有的JS库。
搜索的另一个好库似乎是rsql-builder。