openapi 3 spring boot example

OpenAPI是一个用于定义API的规范,而Spring Boot是一个用于构建基于Spring框架的应用程序的工具。OpenAPI和Spring Boot可以结合使用,使用OpenAPI规范定义API,并使用Spring Boot来构建和实现这些API。

以下是一个使用OpenAPI 3和Spring Boot的简单示例:

  • 首先,需要创建一个OpenAPI 3规范文件。可以使用YAML或JSON格式,以下是一个使用YAML格式的示例:
  • openapi: 3.0.0
    info:
      title: My API
      version: 1.0.0
    servers:
      - url: http://localhost:8080
    paths:
      /hello:
          summary: Returns a greeting
          responses:
            '200':
              description: A greeting message
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      message:
                        type: string
    

    在这个规范文件中,我们定义了一个名为"My API",版本号为"1.0.0"的API,它只有一个路径"/hello",并且使用HTTP GET方法获取数据。当我们访问这个路径时,我们会收到一个JSON格式的响应,其中包含一个名为"message"的属性,其值为一个字符串。

  • 接下来,需要添加必要的依赖项,以便使用OpenAPI规范和Spring Boot来实现API。可以在Maven或Gradle中添加以下依赖项:
  • <dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-ui</artifactId>
      <version>1.5.9</version>
    </dependency>
    <dependency>
      <groupId>org.springdoc</groupId>
      <artifactId>springdoc-openapi-webflux-core</artifactId>
      <version>1.5.9</version>
    </dependency>
    
  • 接下来,需要创建一个Spring Boot应用程序,并添加一个控制器类来实现定义的API。以下是一个简单的示例:
  • @RestController
    public class HelloController {
      @GetMapping("/hello")
      public Map<String, String> hello() {
        Map<String, String> response = new HashMap<>();
        response.put("message", "Hello, world!");
        return response;
    

    在这个示例中,我们创建了一个名为"HelloController"的控制器类,它具有一个@GetMapping注释,该注释将路径"/hello"映射到hello()方法上。在hello()方法中,我们创建了一个Map对象,并将"message"键和"Hello, world!"值添加到该Map中,然后将Map作为响应返回。

  • 最后,需要配置Spring Boot应用程序,以将OpenAPI规范文件与控制器类连接起来。可以在application.properties或application.yml文件中添加以下配置:
  • springdoc.swagger-ui.path=/swagger-ui.html
    springdoc.api-docs.path=/v3/api-docs
    

    这些配置告诉Spring Boot将OpenAPI规范文件映射到"/v3/api-docs"路径,并将Swagger UI映射到"/swagger-ui.html"路径。

    现在,可以启动

  •