Spring Boot:自动生成完整的 CRUD REST 端点并显示在 SwaggerUI 中

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

我创建了一个 spring-boot 项目,并为

/employers

定义了一个带有 1 个端点的 REST 控制器
@RestController
public class EmployerController {

    @Autowired
    private EmployerService employerService;

    @GetMapping(path = "/employers")
    public List<Employer> getEmployers() {
        return (List<Employer>) employerService.getEmployers();
    }
}

此外,我还创建了关联的 EmployerService、EmployerRepository 和 Employer 实体

当我将 Swagger/OpenAPI 添加到类路径,然后导航到

http://localhost:8080/swagger-ui.html
时,雇主实体有一个完整的 CRUD REST 定义,其中包括
GET/POST/PUT/DELETE/PATCH

当我只为

GET /employers
定义单个端点时,为什么要为雇主定义完整的 CRUD REST API?如果这是可配置的,是否可以禁用 REST API 的自动创建?

spring-boot swagger openapi spring-rest
1个回答
2
投票

我的猜测是,您正在使用

spring-boot-starter-data-rest
,我相信一旦您创建了
@Entity
带注释的类和 CrudRepository,它就会自动公开这些 CRUD 端点。

那么,你的 build.gradle 或 pom.xml 中的 spring 依赖项是什么?我想您使用的不仅仅是通常的

spring-boot-starter
spring-boot-starter-web
依赖项。

无论如何,我不认为所有这些端点都来自您提供的代码片段中的

@GetMapping
。我们必须查看依赖项和其余设置才能确定。具体来说,
EmployerRepository
的实现扩展了什么?如果它是
CrudRepository
并且您正在使用
spring-boot-starter-data-rest
,我相信这可以解释它。

这里是文档https://docs.spring.io/spring-data/rest/reference/repository-resources.html

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