1、首先还是新建springboot工程,导入相关依赖。

        <!--swagger3 文档-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
        <!--swagger美化-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.6</version>
        </dependency>

我是导入的swagger3,第一个springfox集成了swagger,第二个美化可有可无。

2、解决冲突

从springboot 2.6.x开始,就与swagger产生了冲突,这时我用了application.yml配置,暂时可用

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

3、需要配置config

package com.hc.store.config;

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.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@EnableOpenApi
@Configuration
public class SwaggerConfig {

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                .groupName("hc_conf")
                .select()
                //需要放出的接口
                .apis(RequestHandlerSelectors.basePackage("com.hc.store.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("接口文档")
                .description("swagger3")
                .contact(new Contact("chajintao", "", "220780****@qq.com"))
                .version("1.0")
                .build();
    }


}
这里有注解必须要加@EnableOpenApi,代表引入了swagger3。

配置类是配置需要显示的控制类,即Docket,还有一些文档信息。

title是标题,description是对该文档的描述,contact是写自己的联系方式,version是定义版本,groupName是项目名称,apis(RequestHandlerSelectors.basePackage("控制层路径"))是你自己的的控制层。

4、然后就是controller层了

package com.hc.store.controller;


import com.hc.store.model.Product;
import com.hc.store.model.User;
import com.hc.store.service.ProductService;
import com.hc.store.service.UserService;
import com.hc.store.util.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Api(tags = "swagger控制器")
@RestController
@RequestMapping("/swaggers")
public class SwaggerController extends BaseController {

    @Autowired
    private UserService userService;
    @Autowired
    private ProductService productService;


    @ApiOperation(value = "通过主键id查询用户")
    @ApiImplicitParam(name = "id", value = "用户id", required = true, dataType = "User")
    @RequestMapping("/getUserByUid")
    public JsonResult<User> getUserByUid(Integer id) {
        User user = userService.getUserByUid(id);
        return new JsonResult<>(OK,user);
    }

    @ApiOperation(value = "商品数据分页", notes = "")
    @RequestMapping("/getAllPros")
    public Map<String,Object> getAllPros(@RequestParam(required = false,defaultValue = "1") Integer page, @RequestParam(required = false,defaultValue = "10") Integer limit) {

        Integer count = productService.getCount();

        List<Product> list = productService.getPros(page,limit);


        Map<String,Object> map=new HashMap<String,Object>();
        map.put("code",0);
        map.put("msg","");
        map.put("count",count);
        map.put("data",list);
        System.out.println(map.toString());
        return map;
    }
}

这时候就已经完成了,就是特别简单的整合,不深入。

@Api用在controller类,描述API接口,tags是分类,controller下所有接口生成的文档都在tags下

@ApiOperation用在方法上,描述接口方法,value是方法描述,notes是提示内容,tags重新分组

@ApiParam用在入参上面,描述参数,name是参数名,value是说明,required是否必填

剩下的我都没有设置,在这里也简单记一下,万一忘了可以查看。

@ApiModel() 用在类上,value表示对象名称,description表示描述

@ApiModelProperty() 用在方法、字段上,value是字段说明,name是重写属性名,dataType是重写属性类型,required是否必填,example是举例说明,hidden是隐藏

大概就那么多了,比较简单,能用是第一,用好才是大神的行为。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐