Spring Rest Controller 通过 id/ids 方法查找

ale*_*oid 2 rest spring spring-mvc spring-restcontroller

我的 Spring RestController 中有以下方法:

@RequestMapping(value = "/{decisionId}", method = RequestMethod.GET)
    public DecisionResponse findById(@PathVariable @NotNull @DecimalMin("0") Long decisionId) {
....
}
Run Code Online (Sandbox Code Playgroud)

现在我需要添加通过{decisionIds}以下方式找到一组 DecisionResponse 的可能性:

@RequestMapping(value = "/{decisionIds}", method = RequestMethod.GET)
    public List<DecisionResponse> findByIds(@PathVariable @NotNull @DecimalMin("0") Set<Long> decisionIds) {
....
}
Run Code Online (Sandbox Code Playgroud)

以下两种方法不能同时使用。

实现此功能的正确方法是什么?{decisionIds}即使我只需要 1 个Decision对象,我是否应该只留下一个等待并返回集合的方法(第二个) ?还有另一种正确的方法来实现这个吗?

Aji*_*man 5

您可以创建一个端点来发送单个长值以及长值数组:

@RequestMapping(value = "/{decisionIds}", method = RequestMethod.GET)
    public List<DecisionResponse> findByIds(@PathVariable @NotNull @DecimalMin("0") Set<Long> decisionIds) {
          System.out.println(decisionIds);
}
Run Code Online (Sandbox Code Playgroud)

并通过发送路径变量来调用此端点,如下所示:

http://本地主机:8080/11,12,113,14