gpt4 book ai didi

java - 为什么RestController要公开CrudRepository中的所有操作?

转载 作者:行者123 更新时间:2023-12-02 12:10:47 25 4
gpt4 key购买 nike

设置

我有一个 PagingAndSortingRepository,我只想从中公开一组有限的(大部分)读取操作并添加一些非数据库服务。我添加了一个 REST Controller 来处理 CRUD 存储库。

问题

在 Swagger 界面上,我看到所有操作均已启用,即使仅从其余存储库调用了一个操作。所有操作都有相同的路径,例如下面的例子中的“/rest/foo”。

如何禁用 Spring Boot 注入(inject)所有操作?

其他观察:

  • 如果我在其余 Controller 中没有任何使用 crud 存储库的方法,则不会列出操作。即使 CRUD 存储库是自动连接的。
  • 我不想单独禁用 CRUD Repo 中的每个操作。即使我这样做,Swagger 也会列出操作,但调用会失败并返回 405。

示例代码

public interface MyCRUDRepository extends PagingAndSortingRepository<Foo, FooPK> {
}
<小时/>
@RestController
public class MyRESTController {

@Autowired
MyCRUDRepository repository;

@RequestMapping("/rest/foo")
public Foo find(String id) {
return repository.findOne(id);
}
}

最佳答案

我为解决该问题所做的两项更改:

  1. 在 RequestMapping 中添加了方法属性 (GET)。如果没有这个,所有方法都被允许,绑定(bind)到相同的方法。
  2. 按照 @mrkernelpanic 的建议,将 @ApiOperation 添加到方法中纠正了 Swagger 将所有方法添加到其报告的 API 中的错误。

关于java - 为什么RestController要公开CrudRepository中的所有操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46566760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com