Spring Boot与Swagger 集成

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012442381/article/details/89047954

Spring Boot与swagger 集成

swagger 简单描述

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

环境

IntelliJ IDEA
Maven

集成步骤

步骤1: 修改pom.xml,添加maven依赖

	<!-- Swagger -->
	<dependency>
		<groupId>io.springfox</groupId>
		<artifactId>springfox-swagger2</artifactId>
		<version>2.6.1</version>
	</dependency>

	<dependency>
		<groupId>io.springfox</groupId>
		<artifactId>springfox-swagger-ui</artifactId>
		<version>2.6.1</version>
	</dependency>

步骤2: 创建swagger配置文件类
在这里插入图片描述
实现

package com.nb.spr.spr;

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

/*
* SwaggerConfig  配置
* */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    //swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("apiInfo")
                .pathMapping("/")// base,最终调用接口后会和paths拼接在一起
                .apiInfo(apiInfo())
                .select()
                //为当前包路径
                .apis(RequestHandlerSelectors.basePackage("com.nb.spr.spr.controller"))
                //PathSelectors.any() 任意接口, 可以自定义如: .paths(or(regex("/api/.*")))
                .paths(PathSelectors.any())
                .build();
    }

    //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //页面标题
                .title("Spring Boot 测试使用 Swagger2 构建RESTful API")
                //创建人
                .contact(new Contact("NGGLOG","https://blog.csdn.net","xxx"))
                //版本号
                .version("1.0")
                //描述
                .description("API 描述")
                .build();
    }
}

步骤3: 实现restFul接口

package com.nb.spr.spr.controller;

import com.nb.spr.spr.service.IUserService;
import com.nb.spr.spr.vo.UserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * spring boot restful API
 * 用户服务接口
 */

@RestController
@RequestMapping("api/user")
@Api
public class UserController {

    @Autowired
    private IUserService iUserService;

    private static final Logger logger= LoggerFactory.getLogger(UserController.class);

    /**
     * 参数:@PathVariable
     * @param userId
     * @return
     */
    @ResponseBody
    @ApiOperation(value = "根据id查询用户信息", notes = "查询数据库中某个的用户信息")
    @ApiImplicitParam(name = "userId", value = "用户ID", paramType = "path", required = true, dataType = "Long")
    @RequestMapping(value = "/getUserInfo/{userId}", method = RequestMethod.GET)
    public UserVO getUserInfo(@PathVariable Long userId) {
        logger.info("开始查询某个用户信息");
        return iUserService.getUserInfoById(userId);
    }

    /**
     * 参数 :@RequestBody
     * @param vo
     * @return
     */
    @ResponseBody
    @ApiOperation(value = "根据id查询用户信息", notes = "查询数据库中某个的用户信息")
    @RequestMapping(value = "/getUserBody", method = RequestMethod.POST)
    public UserVO getUserBody(@RequestBody UserVO vo) {
        logger.info("开始查询某个用户信息");
        return iUserService.getUserInfoById(vo.getUserId());
    }
}

步骤4: 测试
测试项目:http://localhost:8081/sprdemo/swagger-ui.html
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u012442381/article/details/89047954