根据请求类型在同一控制器的另一个休息控制器函数中调用休息控制器函数是一个好习惯吗?

问题描述 投票:0回答:1

假设我有 2 个 REST 端点,其中第二个在内部调用第一个端点。 POST 端点的行为类似于普通的 GET 端点,但由于

dependentCategories
的集合非常大,我无法使用 is 作为查询参数,因此我选择使用 GET 含义中的 POST。另一个问题是,如果
dependentCategories
为空集或为空,我必须做出不同的反应。

这整个概念是反模式吗?对于这样的例子是否存在更好的解决方案?也许我应该调用 Service 中的其他方法,以便 GET 端点不依赖于 POST 端点?

@RestController
public class CategoriesController {

    @PostMapping("/categories/{productNo}") 
    ResponseEntity<?> getCategories(@PathVariable final String productNo,
                                    @RequestBody final Set<String> dependentCategories) {
        //some logic
    };

    @GetMapping("/categories/{productNo}")
    ResponseEntity<?> getCategories(@PathVariable final String productNo) {
        return this.getCategories(productNo, null); // or empty Set instead of null
    };

}
spring spring-restcontroller spring-rest
1个回答
0
投票

最好将它们分开,两个端点之间的任何逻辑差异都可以在服务层中实现。或者您可以创建一个端点 (POST) 并检查 dependentCategories 是否为 null 来决定将使用逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.