Spring 为搜索启动 REST 设计 API

Spring Boot REST Design for Search API

我正在设计 SpringBoot RESTful API 用于 Product 使用各种属性进行搜索(搜索可以是一个或多个)。很少有标准大于一定数量,也很少小于一定数量。在 @RequestParam 中,我们可以采用字符串或类似值,但不能采用任何条件。

我的问题是在 GET 搜索 API 调用

中获取这些条件的用户数据的最佳方法是什么
@GetMapping("/search")
public ResponseEntity<List<OrderView>> searchOrders(...)
{
...
// call to service implementation
...
}

嗯... https://spring.io/guides/tutorials/bookmarks/ 对 spring 的 REST 服务有很好的描述。它还描述了涉及 RESTful 原则的不同级别(您可以使用 HAL 的 spring-boot 非常简单和巧妙地完成 HATEOAS)。

当您进行搜索时,您没有资源 (level1) url 但您想获取它...所以可以(恕我直言)进行简单的查询参数调用。例如,当查看 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

在这篇文章 Spring Boot: How to design efficient REST API? 中,我解释了如何开发用于搜索的 REST API。例如,您在本文中找到了 postman 的代码和屏幕截图。

作为一个端点的优化,我可以得到几个结果:资源被排序、过滤和分页。

你不需要处理很多代码(检查查询参数和控制器中的所有控件):库 specification-arg-resolver 使它毫无问题