美文网首页
springboot 集成 swagger 和 swagger-

springboot 集成 swagger 和 swagger-

作者: 刘小刀tina | 来源:发表于2020-04-22 16:57 被阅读0次

    1 项目集成:

    第一步:pom.xml 添加相关的依赖jar包
       <!-- 升级版的swagger依赖的jar包-->
    
            <!-- swagger用于定义API文档 -->
            <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>
    
            <!--美化swagger-->
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>swagger-bootstrap-ui</artifactId>
                <version>1.9.3</version>
            </dependency>
    
    第二步: 创建两个相关的配置类,记得添加注解-> @Configuration 和 @EnableSwagger2
    第1个配置类:
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.icitic.mc.user.services.web")) //此次每次使用须换成自己的web接口的全限定类名
                    //.paths(AppUtility.isProd() ? PathSelectors.none() : PathSelectors.any())
                    .paths(PathSelectors.any())
                    .build();
        }
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("测试swagger")
                    .description("展示swagger界面")
                    .termsOfServiceUrl("http://localhost:9001/swagger-ui.html")
                    .contact(new Contact("tina.liu", "http://localhost:9001/swagger-ui.html", "xxxxx@qq.com"))
                    .version("1.0")
                    .build();
        }
    
    }
    
    第2个配置类:
    @Configuration
    public class WebMvcConfig extends WebMvcConfigurationSupport {
    
        @Override
        protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            
            //排除静态文件
            
            registry.addResourceHandler("swagger-ui.html")
                    .addResourceLocations("classpath:/META-INF/resources/");
    
            registry.addResourceHandler("doc.html")
                    .addResourceLocations("classpath:/META-INF/resources/");
    
            registry.addResourceHandler("/webjars/**")
                    .addResourceLocations("classpath:/META-INF/resources/webjars/");
            super.addResourceHandlers(registry);
        }
    
    }
    
    第三步: 查看 http://127.0.0.1:8089/doc.html

    2 . swagger 相关的一些注解 及范例:

    @Api(tags = "用户模块"):用在类上,说明该类的作用。
    @ApiOperation:注解来给API增加方法说明。
    @ApiImplicitParams : 用在方法上包含一组参数说明。
    @ApiImplicitParam:用来注解来给方法入参增加说明。
    @ApiResponses:用于表示一组响应
    @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息

    • code:数字,例如400
    • message:信息,例如"请求参数没填好"
    • response:抛出异常的类
      @ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
    • @ApiModelProperty:描述一个model的属性
      注意:@ApiImplicitParam的参数说明:

    paramType:指定参数放在哪个地方
    header:请求参数放置于Request Header,使用@RequestHeader获取
    query:请求参数放置于请求地址,使用@RequestParam获取
    path:(用于restful接口)-->请求参数的获取:@PathVariable
    body:(不常用)
    form(不常用)
    name:参数名
    dataType:参数类型
    required:参数是否必须传 true | false
    value:说明参数的意思
    defaultValue:参数的默认值

    (1)Model (数据库表的映射对象,及实体类)中使用 Swagger 注解

    
    @ApiModel(value = "UserEntity", description = "用户对象")
    public class UserEntity implements Serializable{
    
        @ApiModelProperty(value ="用户id",name="id",dataType="Long",required = false,example = "1",hidden = false )
        private Long id;
    
        @ApiModelProperty(value ="用户名",name="userName",dataType="String",required = false,example = "关羽" )
        private String userName;
    
        @ApiModelProperty(value ="用户性别",name="userSex",dataType="String",required = false,example = "男" )
        private String userSex;
    }
    

    (2) web层API接口(controller类) 中使用swagger注解

    @RestController
    @Slf4j
    @RequestMapping(value = "/v1/service")
    @RefreshScope // 支持nacos配置动态刷新的功能
    @Api(tags = "用户模块")
    
    public class UserApi {
    
        @Autowired
        private UserService userService;
    
        @ApiOperation(value = "分页查询")
        @ApiImplicitParams(value ={
                @ApiImplicitParam(name = "page",value="当前页码",required = false,dataType = "Integer",paramType = "query"),
                @ApiImplicitParam(name="size",value = "每页大小",required = false,dataType = "Integer",paramType = "query"),
        } )
        @GetMapping
        public Response getUserByPage(UserPageable userPageable){
            return userService.getUserByPage(userPageable);
        }
    
        // 根据Id查询用户的信息
        @ApiOperation(value = "用户查询",notes ="用户查询")
        @ApiImplicitParam(name = "id",value = "id",required = true
                ,dataType = "Long",paramType = "path")
        @GetMapping(value = "/{id}")
        public Response getUserById(@PathVariable Long id) {
            return Response.success().data("data",userService.getUserById(id));
        }
    
        //添加用户的接口
        @ApiOperation(value = "添加用户",notes = "添加用户")
        @ApiImplicitParam(name="request",value = "新增用户参数",required = true,dataType = "UserCreateRequest",paramType = "body")
        @PostMapping
        public Response createUser(@RequestBody UserCreateRequest request){
            return userService.save(request);
        }
    
        //根据ID删除用户的接口
        @ApiOperation(value = "根据ID删除用户",notes = "根据ID删除用户")
        @ApiImplicitParam(name ="id",value = "id",required = true,dataType = "Long",paramType = "path")
        @DeleteMapping(value = "/{id}")
        public Response deleteUserById(@PathVariable Long id){
    
            return userService.deleteUserById(id);
        }
    
        //修改用户的接口
        @ApiOperation(value = "修改用户")
        @ApiImplicitParam(name = "request",value = "修改用户的参数",required = true,dataType = "UserUpdateRequest",paramType = "body")
        @PutMapping(value = "/{id}")
        public Response updateUser(@RequestBody UserUpdateRequest request , @PathVariable Long id){
            return userService.updateUser(request,id);
        }
    
        //用户登陆的接口
        @ApiOperation(value = "用户登陆",notes = "用户登陆")
        @ApiImplicitParam(name="request",value = "用户登陆的参数",required = true,dataType = "UserLoginRequest",paramType = "body")
        @PostMapping(value = "/login")
        public Response Login(@RequestBody UserLoginRequest request){
           User user  =  userService.login(request);
           if(user != null){
               return Response.fail().data("token",TokenUtil.getToken());
           }
            return Response.success().data("token",null);
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:springboot 集成 swagger 和 swagger-

          本文链接:https://www.haomeiwen.com/subject/tlqwihtx.html