swagger ui 配置整合

这篇具有很好参考价值的文章主要介绍了swagger ui 配置整合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、swagger简介

        官网:https://swagger.io/

1、认识swagger
        swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RestFul风格的web服务,总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器断的代码,允许API来始终保持同步。

2、作用:

  • 接口的文档在线自动生成。
  • 功能测试。

3、Swagger是一组开源项目,其中主要要项目如下:

  • Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0文档等功能。
  • Swagger-core: 用于Java/Scala的的Swagger实现。与JAX-RS(Jersey、Resteasy、CXF…)、Servlets和Play框架进行集成。
  • Swagger-js: 用于JavaScript的Swagger实现。
  • Swagger-node-express: Swagger模块,用于node.js的Express web应用框架。
  • Swagger-ui:一个无依赖的HTML、JS和CSS集合,可以为Swagger兼容API动态生成优雅文档。
  • Swagger-codegen:一个模板驱动引擎,通过分析用户Swagger资源声明以各种语言生成客户端代码。

二、springboot整合swagger ui

1.在maven项目的pom文件中导入相关的依赖 

        <!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-spring-web</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

2.编写配置文件

        在配置文件 config 目录下,添加 swagger 的配置文件 SwaggerConfig.java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;

@Configuration   //配置类,启动时加载此类
@EnableSwagger2  //开启 swagger2 的自动配置
public class SwaggerConfig{
    @Bean
    public Docket customDocket() {
        //创建一个 swagger 的 bean 实例
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())  // 配置基本信息
                .select()  // 设置扫描接口
                .apis(RequestHandlerSelectors.basePackage("com.yxuan.springboot.controller"))//扫描的包路径
                .build()  //构建Docket对象
                .globalOperationParameters(this.getParameterList()); //配置全局请求头信息
    }


    /**
     * 基本信息设置
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("志愿护航接口文档")  // 标题
                .version("1.0.0")  // 版本
                .build();   //构建Docket对象
    }


    /**
     * 添加head参数配置
     */
    private List<Parameter> getParameterList() {
        ParameterBuilder clientIdTicket = new ParameterBuilder(); //创建一个参数构建器。
        List<Parameter> pars = new ArrayList<Parameter>();  //创建一个参数列表。
        clientIdTicket.name("token").description("token令牌")  //设置参数名称和描述信息。
                .modelRef(new ModelRef("string"))  //设置参数类型为字符串。
                .parameterType("header")  //设置参数的位置为header。
                .required(false).build(); //设置参数是否必填,这里设置为false,表示不是必填参数。
        pars.add(clientIdTicket.build()); //将构建好的参数添加到参数列表中。
        return pars; //返回参数列表。
    }
}

3.在model实体类中添加注解

  •         在实体类上方添加注解 @ApiModel ,标明实体类名称
  •         在每个参数上方添加注解 @ApiModel ,标明参数名称
/**
 * 
 * @author zchao
 *    CharacteristicSpecialty实体类
 * @date 2023-05-09 11:17:05
 */
@Data
@ApiModel(description = "特色专业")
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })
public class CharacteristicSpecialty implements Serializable{

	  private static final long serialVersionUID = 1L;
	
	  @ApiModelProperty(value = "")
	  private Integer id;
	  @ApiModelProperty(value = "院校id")
	  private Integer schoolId;
	  @ApiModelProperty(value = "类型")
	  private String techType;
	  @ApiModelProperty(value = "学科名")
	  private String specialtyName;


}

4.在controller层添加注解   

  •         在controller类上方添加注解 @Api ,标注名称
  •         在具体的方法上方添加注解 @ApiOperation ,标明方法名称,作用等
  •         在具体的方法上方添加注解  @ApiImplicitParams ,可以设置方法单独的请求头信息
package com.yxuan.springboot.controller;

import com.yxuan.springboot.model.Information;
import com.yxuan.springboot.util.TencentCOSUploadFileUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;

/**
 * 
 * @author zchao
 *   Information控制器
 * @date 2023-05-14 20:40:39
 */
@Slf4j
@Controller
@Api(tags = "资讯表")
@RequestMapping(value = "/information")
public class InformationController extends BaseController<Information>{

    /**
      * @className: InformationController.java
      * @methodName: upload
      * @effect: 文件上传腾讯云存储+
      * @author: JingxuanFan
      * @date: 2023/5/15 9:47
      **/
//    name:请求头的名称   value:请求头的描述信息  required:请求头是否必填    dataType:请求头的数据类型   paramType:请求头的类型
    @ApiOperation(value = "上传文件", notes = "将文件上传到腾讯云存储中",httpMethod = "POST")
    @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "用户登入的Id", required = true, dataType = "string", paramType = "header")})
    @PostMapping("/addFile")
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request){
        try {
            if (null == file) {
                return "文件为空";
            }
            //在请求头中获取用户登入的Id
            String id = request.getHeader("userId");
            //调用工具类中上传文件的方法
            String filePath = TencentCOSUploadFileUtil.uploadfile(file,id);
            return "上传成功,访问地址为:"+filePath;
        }catch (Exception e){
            log.error(e.getMessage());
            return "addFileError";
        }
    }
}

三、注解详解

1、@Api:用于描述整个API接口信息,包括标题、描述、版本等。(常用)

  • value:API接口的标题。
  • description:API接口的描述。
  • version:API接口的版本号。
  • tags:API接口的标签,可以有多个。

示例:@Api(value = "用户管理接口", description = "提供用户的增删改查功能", tags = {"用户管理"})

2、@ApiOperation:用于描述API接口中的某个方法的信息,包括方法名、描述、请求方式等。(常用)

  • value:API接口方法的名称。
  • notes:API接口方法的描述。
  • httpMethod:API接口方法的请求方式,如GET、POST等。
    • GET:用于获取资源。
    • POST:用于创建资源。
    • PUT:用于更新资源。
    • DELETE:用于删除资源。
    • PATCH:用于部分更新资源。
    • HEAD:类似于GET请求,但只获取资源的头部信息,用于检查资源是否存在或是否被修改。
  • response:API接口方法的返回类型。

示例:@ApiOperation(value = "根据用户ID获取用户信息", notes = "根据用户ID获取用户信息", httpMethod = "GET", response = User.class)

3、@ApiParam:用于描述API接口中的参数信息。(常用)

  • name:参数名称。
  • value:参数的描述。
  • required:参数是否必须。
  • dataType:参数的数据类型。
  • paramType:参数的类型,如path、query、body等。

示例:@ApiParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path")

4、@ApiResponse:用于描述API接口方法的返回信息。

  • code:返回状态码。
  • message:返回消息。
  • response:返回类型。

示例:@ApiResponse(code = 200, message = "操作成功", response = User.class)

5、@ApiResponses:用于描述API接口方法的多个返回信息。参数如下:
value:@ApiResponse注解数组。

示例:

@ApiResponses(value = {
    @ApiResponse(code = 200, message = "操作成功", response = User.class),
    @ApiResponse(code = 400, message = "请求参数错误", response = Error.class),
    @ApiResponse(code = 500, message = "服务器内部错误", response = Error.class)
})

6、@ApiModel:用于描述实体类的信息,包括名称、描述等。(常用)

  • value:DTO类的名称。
  • description:DTO类的描述。

示例:@ApiModel(value = "用户DTO", description = "用户信息")

7、@ApiModelProperty:用于描述实体类中的属性信息。(常用)

  • value:属性的描述。
  • name:属性的名称。
  • dataType:属性的数据类型。
  • required:属性是否必须。
  • example:属性的示例值。

示例:@ApiModelProperty(value = "用户ID", name = "userId", dataType = "int", required = true, example = "1")

8、@ApiIgnore 用于忽略某个API接口或API接口方法,不会在Swagger UI中显示。它可以用于在代码中标记一些不需要展示在Swagger UI中的接口或方法,避免Swagger UI中出现过多的无用接口和方法。

示例:

@ApiIgnore
public void someMethod() {
    // some code here
}

9、@ApiImplicitParam:用于描述API接口中的参数信息,与@ApiParam相似,但是可以用于描述多个参数。

  • name:参数名称。
  • value:参数的描述。
  • required:参数是否必须。
  • dataType:参数的数据类型。
  • paramType:参数的类型,如path、query、body等。

示例:@ApiImplicitParams({
    @ApiImplicitParam(name = \\"userId\\", value = \\"用户ID\\", required = true, dataType = \\"int\\", paramType = \\"path\\"),
    @ApiImplicitParam(name = \\"userName\\", value = \\"用户名\\", required = true, dataType = \\"string\\", paramType = \\"query\\")
})

10、@ApiImplicitParams:用于描述API接口中的多个参数信息,与@ApiImplicitParam相似。
value:@ApiImplicitParam注解数组。

示例:

@ApiImplicitParams({
    @ApiImplicitParam(name = \\"userId\\", value = \\"用户ID\\", required = true, dataType = \\"int\\", paramType = \\"path\\"),
    @ApiImplicitParam(name = \\"userName\\", value = \\"用户名\\", required = true, dataType = \\"string\\", paramType = \\"query\\")
})

11、@ApiError:用于描述API接口方法的错误信息。

  • code:错误状态码。
  • reason:错误原因。

示例:@ApiError(code = 400, reason = \\"请求参数错误\\")

12、@ApiErrors:用于描述API接口方法的多个错误信息。

  • value:@ApiError注解数组。

示例:

@ApiErrors(value = {
    @ApiError(code = 400, reason = \\"请求参数错误\\"),
    @ApiError(code = 500, reason = \\"服务器内部错误\\")
})

13、@ApiOperationSupport:用于描述API接口方法的其他信息,如文档、作者等。

  • author:API接口方法的作者。
  • since:API接口方法的版本号。
  • tags:API接口方法的标签。

示例:@ApiOperationSupport(author = \\"John Doe\\", since = \\"1.0\\", tags = {\\"用户管理\\"})文章来源地址https://www.toymoban.com/news/detail-796658.html

到了这里,关于swagger ui 配置整合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot整合Swagger踩坑-项目启动报错与swagger-ui.html请求404无法访问

    依赖 常见依赖接入方式如下: springfox推荐 依赖接入方式如下: 建议使用推荐的方式,可以协助我们解决404异常的问题。 配置 依赖导入完成后创建 SwaggerConfig.java 配置: 报错信息: org.springframework.context.ApplicationContextException: Failed to start bean ‘documentationPluginsBootstrapper’; n

    2024年02月01日
    浏览(37)
  • Java技术-接口文档-Swagger2&Swagger3&接口文档UI整合

    目录 一、Swagger2完整用法 1.POM依赖 2.接口类 3.实现类 4.托管静态资源 5.接口文档配置 6.生产环境关闭接口文档 7.Swagger3页面效果 二、Swagger3完整用法 三、Swagger整合Knife4jUi 1.POM依赖 2.接口类 3.实现类 4.托管静态资源 5.接口文档配置 6.生产环境关闭接口文档 四、注释和参数讲解

    2024年02月16日
    浏览(47)
  • 【JAVA swagger】解决No mapping for GET /swagger-ui.html报错

    完整代码在最后 一、报错 1.网页报错404 2.代码报错 No mapping for GET /swagger-ui.html 二、解决办法 1.版本回退 之前用的是swagger3.0.0和springboot3.0.6,始终没找到合适的解决办法,故将版本回退至swagger2.9.2和springboot2.7.11 2.Spring Boot 2.6.X后与Swagger有版本冲突问题,需要在application.prope

    2024年02月11日
    浏览(51)
  • Springboot配置Swagger展示API文档并进行接口测试(doc.html、swagger-ui.html)

    三、创建一个测试接口 http://localhost:8080/doc.html http://localhost:8080/swagger-ui.html

    2024年02月10日
    浏览(39)
  • springboot2.7以上版本配置swagger3.0.0版本浏览器无法打开swagger-ui

    1.最实用解决方式:将pom里的swagger依赖降到2.9.0即可 过低无法启动项目 1.2 Springboot2.6以后将SpringMVC 默认路径匹配策略从AntPathMatcher 更改为PathPatternParser Springfox 使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher 2.3.0.0版本swagger2访问地址为:http://loca

    2024年02月11日
    浏览(31)
  • Spring Boot 整合 Swagger 教程详解

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SpringBoot 框架从入门到精通 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:Spring Boot 整

    2023年04月14日
    浏览(42)
  • Spring Boot 整合 Swagger2 纠错

            因为我要建立的是微服务的项目,需要建立许多模块,以至于我在父工程中引入了当前模块,然后我在子模块中又引入了当前模块,造成了冲突。         另外一种解决方法是,经过上网查证,可能由于Spring Boot和Swagger版本的问题,Spring Boot2.6以上的版本,需要使用

    2024年02月12日
    浏览(37)
  • swagger 2.10.5 整合 spring boot

    2024年02月11日
    浏览(38)
  • swagger-ui

    目录 一、swagger-ui简介 1.1 swagger-ui原理 1.2 swagger-ui特点 二、swagger-ui+springboot页面使用 2.1 swagger-ui的依赖 2.2 加入以上依赖要注意的点 2.3 工具类 3.4 swagger-ui 常用注解 @Api (修饰类) @ApiOperation(修饰方法) @ApiParam (接收参数) @ApiModel (修饰参数对象类) @ApiModelProperty(修饰参数对象

    2024年02月02日
    浏览(40)
  • Spring Boot整合Spring Fox生成Swagger文档

    Springfox是一个用于在Spring应用程序中生成Swagger文档的开源库。它提供了一组注解和工具,可以将你的API代码和文档整合在一起,方便生成和展示API的Swagger文档。 使用Springfox,你可以在Spring Boot项目中集成Swagger,并通过Swagger UI查看和测试API。它提供了一些注解,如 @Api 、 @

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包