在我的Spring Boot应用程序中,我有一个以下REST控制器:
@RestController
@RequestMapping("/v1.0/decisions")
public class CriterionController {
@Autowired
private CriterionService criterionService;
@RequestMapping(value = "/{decisionId}/criteria/{criterionId}", method = RequestMethod.GET)
public CriterionResponse findById(@PathVariable @NotNull @DecimalMin("0") Long decisionId, @PathVariable @NotNull @DecimalMin("0") Long criterionId) {
Criterion criterion = criterionService.findById(criterionId);
return new CriterionResponse(criterion);
}
}
一切正常,我可以通过Criterion
检索ID
。
现在我需要向我的CriterionController
添加额外的逻辑,该逻辑将通过一组Criterion
检索IDs
。
现在我怀疑它是如何实现的。例如,我应该添加一个分离的端点,如:
/{decisionId}/criteria/{criterionIds}
或者例如为此目的或以某种其他方式重用现有的。请根据REST的最佳实践建议如何实施它。
答案 0 :(得分:1)
这是一个棘手的问题,但我可以提出两个选项:
/{decisionId}/criteria?id=1&id=2&id=3
或
/{decisionId}/criteria?id=1,2,3
前者可被视为更多RESTful,但最终可能会有一个非常长的URL,因为您每次都要指定查询参数。
后者在逗号分隔列表中聚合id。我个人更喜欢这个选项而且会选择这个。
虽然不是关于REST,但RFC 6570
的第3.2.8节接受了这两个URL