Spring Rest控制器按id/ids方法查找
我的Spring RestController中有以下方法:Spring Rest控制器按id/ids方法查找,spring,rest,spring-mvc,spring-restcontroller,Spring,Rest,Spring Mvc,Spring Restcontroller,我的Spring RestController中有以下方法: @RequestMapping(value = "/{decisionId}", method = RequestMethod.GET) public DecisionResponse findById(@PathVariable @NotNull @DecimalMin("0") Long decisionId) { .... } 现在我需要添加一个可能性,通过{decisionIds}查找一组DecisionRespon
@RequestMapping(value = "/{decisionId}", method = RequestMethod.GET)
public DecisionResponse findById(@PathVariable @NotNull @DecimalMin("0") Long decisionId) {
....
}
现在我需要添加一个可能性,通过{decisionIds}
查找一组DecisionResponse。。大概是这样的:
@RequestMapping(value = "/{decisionIds}", method = RequestMethod.GET)
public List<DecisionResponse> findByIds(@PathVariable @NotNull @DecimalMin("0") Set<Long> decisionIds) {
....
}
@RequestMapping(value=“/{decisionIds}”,method=RequestMethod.GET)
公共列表findByIds(@PathVariable@NotNull@DecimalMin(“0”)集合decisionId){
....
}
以下两种方法不能一起使用
实现此功能的正确方法是什么?我应该只留下一个方法(第二个)等待
{decisionIds}
并返回一个集合,即使我只需要1个Decision
对象?有没有其他合适的方法来实现这一点?您的问题是在同一端点上不能有两种不同的方法
换句话说,您不能同时使用这两种方法:
@RequestMapping(value = "/{decisionId}", method = RequestMethod.GET)
public DecisionResponse findById(@PathVariable @NotNull @DecimalMin("0") Long decisionId) {
....
}
@RequestMapping(value = "/{decisionIds}", method = RequestMethod.GET)
public List<DecisionResponse> findByIds(@PathVariable @NotNull @DecimalMin("0") Set<Long> decisionIds) {
....
}
及
都是相同的端点
因此,当您有HTTP请求时,请登录http:///19
,您无法确定要使用哪种方法
解决方案
更清楚地重命名端点以避免冲突
@RequestMapping(value = "/decision/{Id}", method = RequestMethod.GET)
及
我希望这将对您有所帮助。您可以为发送单个长值以及长值数组创建一个端点:
@RequestMapping(value = "/{decisionIds}", method = RequestMethod.GET)
public List<DecisionResponse> findByIds(@PathVariable @NotNull @DecimalMin("0") Set<Long> decisionIds) {
System.out.println(decisionIds);
}
@RequestMapping(value=“/{decisionIds}”,method=RequestMethod.GET)
公共列表findByIds(@PathVariable@NotNull@DecimalMin(“0”)集合decisionId){
系统输出打印LN(决策ID);
}
并通过如下方式发送path变量来调用此端点:
@RequestMapping(value = "/{decisionIds}", method = RequestMethod.GET)
public List<DecisionResponse> findByIds(@PathVariable @NotNull @DecimalMin("0") Set<Long> decisionIds) {
....
}
@RequestMapping(value = "/decisions/{Id}", method = RequestMethod.GET)
@RequestMapping(value = "/{decisionIds}", method = RequestMethod.GET)
public List<DecisionResponse> findByIds(@PathVariable @NotNull @DecimalMin("0") Set<Long> decisionIds) {
System.out.println(decisionIds);
}