java集成swagger

本文介绍如何在SpringBoot项目中集成Swagger生成API文档,包括配置Swagger2、使用Swagger-UI展示接口文档,以及解决跨域请求问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概览:

  • java集成Swagger
  • Swagger-UI的使用
  • Springboot跨域请求的访问解决

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。本文主要介绍了在 Spring Boot 添加 Swagger 支持, 生成可自动维护的 API 文档。

1 . POM文件概览:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!--freemaker支持-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>

    <!--添加swagger支持-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.6.1</version>
    </dependency>

    <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-annotations</artifactId>
        <version>1.5.13</version>
    </dependency>
</dependencies>

2 . 在Application同目录下创建Swagger2的配置文件 Swagger2.java

@Configuration
@EnableSwagger2
public class Swagger2 {

    @Bean
    public Docket config() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .useDefaultResponseMessages(false)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.yl.swagger.controller"))
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("这个标题")
                .contact(new Contact("yl", "47.95.196.183/esileme", "280885685@qq.com"))
                .build();
    }
}

.apis(RequestHandlerSelectors.basePackage("com.pxx.xxx.controller")) 指定了 Swagger 的扫描包名, 假如不指定此项, 在 Spring Boot 项目中, 会生成 base-err-controller 的 api 接口项。

配置好swagger后,在项目中访问 ip:prot/v2/api-docs 即可访问生成文档的json结构,如(http://localhost:8080/v2/api-docs)可以看到,会出现一大串Json字符串。

1220001-20171021105751599-1281769600.png

具体可参考Swagger官方示例

3 . Swagger-UI配置

Swagger扫描解析得到的是一个json文档,对于用户不太友好。下面介绍swagger-ui,它能够友好的展示解析得到的接口说明内容。

github 上获取其所有的 dist 目录下东西放到需要集成的项目里,本文放入 resource/static/swagger 目录下。

修改swagger/index.html文件,默认是从连接http://petstore.swagger.io/v2/swagger.json获取 API 的 JSON,这里需要将url值修改为http://{ip}:{port}/{projectName}/api-docs的形式,{}中的值根据自身情况填写,其实也就是步骤二中的json地址,我的是http://localhost:8080/v2/api-docs。

因为swagger-ui项目都是静态资源,restful形式的拦截方法会将静态资源进行拦截处理,所以要对springboot进行静态资源拦截的处理。

下一步,在代码中调用dist目录下的index.html文件,即可访问到接口文档说明了。

1220001-20171021105654146-1636844192.png

4 . springboot添加freemaker模板引擎

在默认的templates文件夹中新建welcome.ftl 内容如下:

        <!DOCTYPE html>
        <html>
            <body>
                Hello,${name}.欢迎阅读《${bookTitle}》
            </body>
        </html>

创建一个controller hellocontroller

    @Controller
    @RequestMapping("/test")
    public class HelloController {
    
    
        @RequestMapping("")
        public Object test(ModelMap map) {
    
            System.err.println("cnm");
    
            map.put("name", "yl");
            map.put("bookTitle", "bookTitle");
    
            return "welcome";
        }
    }

打开浏览器,访问http://localhost:8080/test 即可访问welcome页面。

  • 在访问index.html的时候,会提示跨域请求没有权限的问题,在Application中添加

      @Bean
      public CorsFilter corsFilter() {
      UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
      source.registerCorsConfiguration("/**", buildConfig());
      return new CorsFilter(source);
      }
    
      private CorsConfiguration buildConfig() {
      CorsConfiguration corsConfiguration = new CorsConfiguration();
      corsConfiguration.addAllowedOrigin("*");
      corsConfiguration.addAllowedHeader("*");
      corsConfiguration.addAllowedMethod("*");
      return corsConfiguration;
      }

即可。

备忘:

  • Swagger-UI本质上是一个写好的html静态页面,我们只需要将我们提供的接口写入index.html中,会给我们的接口数据渲染成一个html页面。
  • Swagger-UI会查找出所有写的请求地址,并显示出来,如我们定义了一个/test 接口,它会把这个接口给显示出来。

转载于:https://www.cnblogs.com/esileme/p/7704063.html

### Java项目集成Swagger和Knife4j 在Java项目中,特别是基于Spring Boot的应用程序,可以通过引入Swagger和其增强版本Knife4j来实现API文档的自动生成与管理。这不仅提高了开发效率,还增强了API的可读性和易用性。 #### 添加依赖项 对于Maven构建工具,在`pom.xml`文件内加入如下依赖: ```xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> <!-- Knife4j扩展 --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> ``` 这些依赖会自动配置好Swagger UI以及提供更美观友好的前端展示效果[^1]。 #### 配置Swagger 创建一个名为`SwaggerConfig.java`的新类用于初始化Swagger设置: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; @Configuration public class SwaggerConfig { @Bean(value = "defaultApi2") public Docket defaultApi2() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(new ApiInfoBuilder() .title("API Documentation") // 文档标题 .description("Description of APIs") // 描述 .contact(new Contact("Name", "", "")) .license("") .licenseUrl("") .version("1.0") .build()) .select() /* 定义扫描包路径 */ .apis(RequestHandlerSelectors.basePackage("com.example.controller")) .paths(PathSelectors.any()) .build(); } } ``` 这段代码定义了一个Docket Bean实例并设置了基本的信息如标题、描述等,并指定了要被解析成API接口的方法所在的包位置。 #### 启动应用后的访问地址 完成上述步骤后启动应用程序,默认情况下可以在浏览器输入以下URL查看生成的API文档页面: - **Swagger UI**: `http://localhost:8080/swagger-ui/index.html` - **Knife4j Enhanced UI**: `http://localhost:8080/doc.html` 这两个链接分别指向原始版和美化过的UI界面,其中后者提供了更多实用功能比如在线调试请求参数等功能。 通过这种方式能够快速有效地为现有的RESTful服务添加详细的交互式文档支持,极大地简化了前后端协作流程中的沟通成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值