springboot集成swagger

参考:https://blog.csdn.net/bbxylqf126com/article/details/109646966

1、加与依赖:pom

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

2、配置其配置类:

package com.example.dtest.javaBeanAppContext.swaggerConfig;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
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;

/*
* 参考:https://blog.csdn.net/bbxylqf126com/article/details/109646966
* */

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket docket() {
        // 设置要显示swagger的环境
        // 通过 enable() 接收此参数判断是否要显示
        return new Docket(DocumentationType.SWAGGER_2)
                // 指定构建api文档的详细信息的方法:apiInfo()
                .apiInfo(apiInfo())
                // .enable(false) //配置是否启用Swagger,如果是false,在浏览器将无法访问
                .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
                // 指定要生成api接口的包路径,这里把controller作为包路径,生成controller中的所有接口
                .apis(RequestHandlerSelectors.basePackage("com.example.dtest.controller"))
                //配置你想在那个controller层生产接口文档
//                .paths(PathSelectors.ant("/search/**"))
                // 配置如何通过path过滤,即这里只扫描请求以/kuang开头的接口
                .build();
    }

    //配置文档信息
    private ApiInfo apiInfo() {
        /*第一种写法*/
//        Contact contact = new Contact("沉默这忍受", "https://blog.csdn.net/ILOVEMYDEAR", "hjj2857154359@126.com");
//        return new ApiInfo(
//                // 设置页面标题
//                "Cartest", // 标题
//                "索引测试管理api", // 描述
//                "v1.0", // 版本
//                "https://blog.csdn.net/ILOVEMYDEAR", // 组织链接
//                contact, // 联系人信息
//                "Apach 2.0 许可", // 许可
//                "许可链接", // 许可连接
//                new ArrayList<>()// 扩展
//        );
//    }
        /*第二种写法*/
        return new ApiInfoBuilder()
                // 设置页面标题
                .title("超级无敌大系统")
                // 设置接口描述
                .description("借口描述:666")
                // 设置联系方式
                .contact(new Contact("DCS", null, "xxxxxxx@xxx.com"))
                // 设置版本
                .version("1.0")
                .build();


    }



}

3、访问网页:
启动应用
应用启动后,访问swagger-ui页面:http://localhost:9999/swagger-ui.html
在这里插入图片描述

这里有个坑:swagger无法传递多文件类型

swagger测试MultipartFile多文件上传,files取不到

解决:

参考:https://blog.csdn.net/qq_43470725/article/details/121406156

package com.example.dtest.controller;

import com.example.vo.Res;
import com.example.vo.TestVO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

@RestController
@RequestMapping("/file")
@CrossOrigin
public class FileController {

    @PostMapping("/insertFile")
    @ApiOperation(value = "swagger用来对接口的说明",notes = "swagger用来对接口的详细描述")
    @ApiImplicitParams(
            {
                    @ApiImplicitParam(name = "id",value = "用户id",dataType = "Integer",defaultValue = "1"),
                    @ApiImplicitParam(name = "nickName",value = "小名",dataType = "String",defaultValue = "1")
            }
    )
    public Res insertFile(
                           @RequestParam("name") String name,
                           @RequestParam("nickName") String nickName,
                           @RequestParam("type") String type,
                           @RequestParam("file") MultipartFile[] multipartFiles
    ){

        System.out.println("11111111111111");
        System.out.println("multipartFiles========"+multipartFiles);
        for(MultipartFile multipartFile : multipartFiles){

            String originalFilename = multipartFile.getOriginalFilename();
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            System.out.println("suffix========="+suffix);
            System.out.println("originalFilename======="+originalFilename);
            try {
                InputStream inputStream = multipartFile.getInputStream();

                FileInputStream fileInputStream = (FileInputStream)inputStream;

                FileOutputStream fileOutputStream = new FileOutputStream("D:\\3.jpg");

                byte[] bytes = new byte[1024];
                int len;
                while ((len = fileInputStream.read(bytes)) != -1){

                    fileOutputStream.write(bytes, 0, len);
                    fileOutputStream.flush();

                }

                fileInputStream.close();
                fileOutputStream.close();

            } catch (IOException e) {
                e.printStackTrace();
            }


        }

        return Res.success();

    }

    @PostMapping("/insertFile02")
    public Res insertFile02(
           TestVO testVO,
            MultipartFile[] multipartFiles
    ){

        System.out.println("11111111111111");
        System.out.println("multipartFiles========"+multipartFiles);
        for(MultipartFile multipartFile : multipartFiles){

            String originalFilename = multipartFile.getOriginalFilename();
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            System.out.println("suffix========="+suffix);
            System.out.println("originalFilename======="+originalFilename);
            try {
                InputStream inputStream = multipartFile.getInputStream();

                FileInputStream fileInputStream = (FileInputStream)inputStream;

                FileOutputStream fileOutputStream = new FileOutputStream("D:\\3.jpg");

                byte[] bytes = new byte[1024];
                int len;
                while ((len = fileInputStream.read(bytes)) != -1){

                    fileOutputStream.write(bytes, 0, len);
                    fileOutputStream.flush();

                }

                fileInputStream.close();
                fileOutputStream.close();

            } catch (IOException e) {
                e.printStackTrace();
            }


        }

        System.out.println(testVO);
        return Res.success(testVO);

    }

}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

swagger2.x的使用
上面我们已经配置好了swagger2,并且也启动测试了一下,功能正常,下面我们开始使用swagger2。swagger2的使用主要是他的注解的使用,swagger2的注解可以分为两大类:controller(类)注解、方法注解;方法注解又包括了修饰方法的注解、修饰方法参数的注解以及修饰方法返回值的注解

@Api – Controller注解
顾名思义,该注解主要作用在类上,用来描述类或者接口的作用

@ApiOperation – 方法注解
该注解主要是作用在方法上,用来说明该方法的作用,他有两个参数值得注意

value: 用来对接口的说明

notes:用来对接口的详细描述

@ApiImplicitParams – 参数注解
作用在方法上,用来对接口的中参数进行说明

@ApiResponses – 返回值注解
作用在方法上,用来对接口的返回值进行说明,表示一组响应

代码演示:

package com.example.dtest.controller;

import com.example.jsontoobject.CaseDTO;
import com.example.jsontoobject.JsonChange;
import com.example.jsontoobject.TaskDetailDTO;
import com.example.vo.Res;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/test000")
@Api(tags = "swagger描述类或者接口")
public class TestController {

    @ApiOperation(value = "swagger用来对接口的说明",notes = "swagger用来对接口的详细描述")
    @ApiImplicitParams(
            {
                    @ApiImplicitParam(name = "taskDetailDTO",value = "swagger解释参数的",dataType = "TaskDetailDTO",defaultValue = "1")
            }
    )
    @ApiResponses({
            @ApiResponse(code = 400, message = "参数错误"),
            @ApiResponse(code = 404, message = "请求路径不正确")
    })
    @PostMapping("/start")
    public Res test(@RequestBody TaskDetailDTO taskDetailDTO){


        System.out.println("taskDetailDTO======="+taskDetailDTO);
        System.out.println("caseId======"+taskDetailDTO.getTaskDetail().get(0));
        List taskDetails = taskDetailDTO.getTaskDetail();
        System.out.println("taskDetails======="+taskDetails);
        List<CaseDTO> cases = new ArrayList<>();
        try {
            cases = JsonChange.listToObject(taskDetails, new TypeReference<List<CaseDTO>>() {
            });
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        System.out.println("cases==========="+cases);
        System.out.println("caseId======"+cases.get(0).getCaseId());
        return Res.success(cases);

    }

}

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值