=============================================================
接口文档想必是许多开发小伙伴的噩梦,不仅要写详细,还要及时维护文档与后端代码保持一致,稍有没及时更新接口文档,前端同学肯定会抱怨后端同学给的文档与实际情况不一致。
于是,引入了Swagger组件,它实现了代码即文档,后端只管写代码,只需要通过几个注解,会自动生成接口文档,前端同学可在线访问。
但是,对界面审美有要求的前端同学,又吐槽Swagger原生界面太low了,而且功能还少。
有压迫就有反抗,后端肯定不服,既然你嫌弃原生Swagger太low,那就给你开通超级VIP - knife4j。
====================================================================
Springboot集成Swagger,其实很简单,主要是使用常用的几个注解而已。因为在面试他人的过程中,还是有不少人没使用过Swagger,所以这里简单介绍下。
首先在Spingboot工程中引入Swagger依赖,主要是2个,如下:
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
编写Swagger配置类,配置项名都简单易懂,可根据自己情况修改配置,注意一点是apis方法是指定要扫描的包路径,一定要写自己项目的。
package com.nobody.config;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Value;
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.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Value(“${swagger.enable:true}”)
private boolean swaggerEnable;
@Bean
public Docket createApi() {
// 全局参数
List pars = new ArrayList<>();
return new Docket(DocumentationType.SWAGGER_2).enable(swaggerEnable).apiInfo(apiInfo())
.select().apis(RequestHandlerSelectors.basePackage(“com.nobody”))
.paths(PathSelectors.any()).build().globalOperationParameters(pars);
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title(“XX服务后端API”).description(“XX服务专用API,其他系统请勿调用!”)
.version(“1.0”).termsOfServiceUrl(“https://nobody.com”)
.contact(new Contact(“陈皮”, “https://nobody.com”, “chenpi@qq.com”)).build();
}
}
下面讲解几个常用的注解,以及如何使用,更多注解以及详细使用可以参考官方文档。
-
@Api:作用于类上,标识此类是Swagger的资源。
-
@ApiOperation:主要作用于方法上,用于对一个接口进行说明。
-
@ApiParam:用于方法,参数,字段上,用于对参数进行说明。
-
@ApiModel:作用于类上,主要用于实体类当接口参数时使用,对实体类进行说明。
-
@ApiModelProperty:作用于方法和字段上,一般用于实体类的属性说明。
package com.nobody.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
-
@Description
-
@Author Mr.nobody
-
@Date 2021/3/28
-
@Version 1.0
*/
@ApiModel(value = “管理员实体”)
@Data
public class AdminDTO {
@ApiModelProperty(value = “用户ID”, required = true, example = “1548w4dwf7as1a21cv4”)
private String personId;
@ApiModelProperty(value = “用户名”, example = “陈皮”)
private String name;
@ApiModelProperty(value = “用户年龄”, required = true, example = “18”)
private Integer age;
}
package com.nobody.controller;
import com.nobody.dto.AdminDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
-
@Description
-
@Author Mr.nobody
-
@Date 2021/3/27
-
@Version 1.0
*/
@Api(tags = {“管理员相关”})
@RestController
@RequestMapping(“admin”)
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
715882778906)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!