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 使它毫无问题
我正在设计 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 使它毫无问题