java - 基于 Spring 的休息调用中的可选 @PathVariable
问题描述
我正在使用带有 java 1.8 的 Spring boot 2.2.2。我有一个帖子类型的休息端点/getViewAnalyticsByDimension。现在为了适应一项功能,我需要将 api 更改为 /getViewAnalyticsByDimension/{priceAgreementId}。我想将路径变量 priceAgreementId 声明为可选。但是,当我在没有来自 Postman 的价格协议 ID 时将请求发布到 /getViewAnalyticsByDimension 时,它无法找到控制器方法。当没有 priceAgreementId 和实际 priceAgreementId 可用时,我可以要求我的前端对应方发送“空白”。但这并不优雅。
解决方案
对于给定的方法,您可以有多个请求映射。因此,在您的情况下,您可以执行以下操作以使其在使用和不使用路径变量的情况下工作:
@RequestMapping(value = {"/getViewAnalyticsByDimension", "/getViewAnalyticsByDimension/{priceAgreementId}"}")
public Object getObject(@PathVariable Optional<Object> priceAgreementId) {
//...
}
如果您使用的是 spring 的旧版本,您可以有两种不同的方法:
@RequestMapping(value = "/getViewAnalyticsByDimension/{priceAgreementId}")
public Object getObject(@PathVariable(name = "priceAgreementId") Object priceAgreementId) {
//...
}
@RequestMapping(value = "/getViewAnalyticsByDimension")
public Object getObject() {
//...
}
您可以查看https://www.baeldung.com/spring-optional-path-variables更多信息
推荐阅读
- php - 根据过滤器 ID 过滤产品
- mysql - SQL如何处理int/string操作数和column之间的转换
- java - 使用 mod 10 时我没有得到数字的最后一位数字,而只是得到 0 的输出?
- php - SCSS 在我看来不起作用 [代码点火器]
- macos - 这是 Mac grep 中的错误吗?从文件中提取,但错过了一些模式
- r - R中 hist() 函数中标签的位置和颜色
- python - 张量流值错误
- python-3.x - Python Pivot 550+ 列
- javascript - 用于合并重叠区间的快速算法
- sql-server - 如何从 SQL Server 表中删除字符序列