基于SpringBoot2开发WebApi(三)集成Swagger2

本文档介绍了如何在Spring Boot项目中集成Swagger2,通过添加依赖、配置SwaggerConfig类以及在Controller中添加注解,实现详细的RESTful API文档,并展示了如何在Swagger UI中进行接口在线测试。Swagger2提供了方便的API管理和测试工具,帮助开发者快速生成和验证API接口。
摘要由CSDN通过智能技术生成

1.依赖

在pom.xml添加Swagger2依赖

        <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>
        <dependency>
            <groupId>com.github.caspar-chen</groupId>
            <artifactId>swagger-ui-layer</artifactId>
            <version>1.1.3</version>
        </dependency>

2.添加Swagger2配置类

在configuration包下增加SwaggerConfig类

package com.iot.simmanager.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;


/**
 * <p>Swagger2配置类</p>
 * @author lenny
 * @date 20210425
 * @version 1.0.0
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    /**
     * 创建API应用
     * apiInfo() 增加API相关信息
     * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
     * 本例采用指定扫描的包路径来定义指定要建立API的目录。
     *
     * @return
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.iot.simmanager.controller"))
                .paths(PathSelectors.any())
                .build()
                .useDefaultResponseMessages(false);

    }

    /**
     * 创建该API的基本信息(这些基本信息会展现在文档页面中)
     * 访问地址:http://项目实际地址/swagger-ui.html
     *
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("SIM Manager APIs")
                .description("SIM卡管理接口文档")
                .termsOfServiceUrl("https://blog.csdn.net/qq_17486399")
                .version("0.0.1")
                .build();
    }
}

3.在Controller增加参数注解

package com.iot.simmanager.controller;

import com.iot.simmanager.model.AdminAgent;
import com.iot.simmanager.service.AdminAgentService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author HyoJung
 */
@Api(tags = "公司管理")
@RestController
@RequestMapping("/agent")
public class AdminAgentController {
    @Autowired
    private AdminAgentService adminAgentService;

    @ApiOperation(value = "查询公司列表", notes = "查询公司列表")
    @PostMapping(value = "queryAdminAgentList")
    public List<AdminAgent> queryAdminAgentList(){
        try {
            List<AdminAgent> adminAgentList = adminAgentService.queryAdminAgentList();
            return adminAgentList;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    @ApiOperation(value = "查询公司列表带参数", notes = "查询公司列表带参数")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "key",value = "查询条件"),
            @ApiImplicitParam(name = "pageNum",value = "当前页",required = true),
            @ApiImplicitParam(name = "pageSize",value = "每页显示条数",required = true)
    })
    @PostMapping(value = "queryAdminAgentListParam")
    public List<AdminAgent> queryAdminAgentListParam(String key, @RequestParam int pageNum, @RequestParam int pageSize){
        try {
            List<AdminAgent> adminAgentList = adminAgentService.queryAdminAgentList();
            return adminAgentList;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

@Api注解:使用在类上,表明是swagger资源,@API拥有两个属性:value、tags;

生成的api文档会根据tags分类,直白的说就是这个controller中的所有接口生成的接口文档都会在tags这个list下;tags如果有多个值,会生成多个list,每个list都显示所有接口

@ApiOperation:使用于在方法上,表示一个http请求的操作,属性比较多,常用的有两个
value用于方法描述
notes用于提示内容

@ApiImplicitParams:用在请求的方法上,表示一组参数说明

@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面

name:参数名

value:参数的汉字说明、解释

required:参数是否必须传

paramType:参数放在哪个地方

· header --> 请求参数的获取:@RequestHeader

· query --> 请求参数的获取:@RequestParam

· path(用于restful接口)--> 请求参数的获取:@PathVariable

· body(不常用)

· form(不常用)

dataType:参数类型,默认String,其它值dataType="Integer"

defaultValue:参数的默认值

除此之外还有很多其他注解,可以参考官方文档查看

4.效果

可以在Debug页面进行接口在线测试

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鱼>

一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值