javascript
freemarker使用说明_SpringBoot+Swagger2集成详细说明
SpringBoot+Swagger2集成詳細(xì)說(shuō)明
引言:
為什么使用Swagger?
在Vue沒(méi)有出來(lái)之前,都是前后端在一起:
后端用的SSM或者SSH框架
前端完全就是靜態(tài)頁(yè)面+模板引擎。例如:JSP開(kāi)發(fā)久的人應(yīng)該聽(tīng)說(shuō)過(guò),和現(xiàn)在的Thymeleaf、 Velocity、FreeMarker 類(lèi)似
在Vue出來(lái)之后,進(jìn)入真正的前后端分離時(shí)代:
后端依然可以是SSM架構(gòu),而現(xiàn)在大廠都在使用微服務(wù)SpringBoot、SpringCloud等
前端就獨(dú)立出來(lái)了,只管呈現(xiàn)效果也就是是三層架構(gòu)的視圖層
為什么叫前后端分離呢?
分離就是各自開(kāi)發(fā)自己的,互不干擾
優(yōu)點(diǎn):
前端可以不用等后端人員開(kāi)發(fā)完在測(cè)試,直接就可以使用Json偽造數(shù)據(jù)測(cè)試,例如:JsonServer工具
可以部署在不同的服務(wù)器上
有新的項(xiàng)目可以隨時(shí)拆分模塊
缺點(diǎn):
此時(shí)就需要在招專(zhuān)業(yè)開(kāi)發(fā)前端的人員,這就是老板的事了。。。
Swagger簡(jiǎn)介:
Swagger是一個(gè)流行的API開(kāi)發(fā)框架,Swagger容許用戶使用Swagger編輯器描述OAS 3.0API,并使用SwaggerUI可視化并自動(dòng)生成OAS 3.0中定義的API文檔。
Swagger可以對(duì)整個(gè)API開(kāi)發(fā)周期提供一個(gè)完整框架,解決調(diào)試過(guò)程中的各種問(wèn)題,包括API設(shè)計(jì),開(kāi)發(fā),測(cè)試,完檔,并且?guī)缀踔С炙姓Z(yǔ)言。
Swagger的用途來(lái)了:
問(wèn)題:
前后端分離聯(lián)調(diào),前后端人員無(wú)法做到及時(shí)的調(diào)試?
當(dāng)年的解決方案:
編寫(xiě)Word文檔,及時(shí)更新(但是很難做到,一般容易忘記)
模擬測(cè)試后端接口:postman
后端開(kāi)發(fā)完之后,提供接口,根據(jù)需求在調(diào)整
現(xiàn)在的解決方案:
Api文檔與API定義同步更新
直接運(yùn)行,在線測(cè)試后端接口
對(duì)多種編程語(yǔ)言的支持
SpringBoot集成Swagger:
1.建立SpringBoot-Web項(xiàng)目
2.引入Swagger依賴
Swagger UI:用于展示API規(guī)范
Springfox:是一個(gè)通過(guò)掃描代碼提取代碼中的信息,生成API文檔的工具。API文檔的格式不止Swagger的OpenAPI Specification,還有RAML,jsonapi,Springfox的目標(biāo)同樣包括支持這些格式。
?<dependency> ? ?<groupId>io.springfoxgroupId> ? ?<artifactId>springfox-swagger2artifactId> ? ?<version>2.9.2version>dependency><dependency> ? ?<groupId>io.springfoxgroupId> ? ?<artifactId>springfox-swagger-uiartifactId> ? ?<version>2.9.2version>dependency>3.配置Swagger
?@Configuration@EnableSwagger2 // 開(kāi)啟Swaggerpublic class SwaggerConfig {}4.編寫(xiě)Controller
?@RestControllerpublic class TestController { ? ?@RequestMapping("hello") ? ?public String hello(){ ? ? ? ?return "hello swagger2"; ? }}6.項(xiàng)目結(jié)構(gòu)
7.啟動(dòng)項(xiàng)目
訪問(wèn):http://localhost:8080/swagger-ui.html
Swagger配置進(jìn)階
Swagger信息和組信息進(jìn)行配置
?@Configuration@EnableSwagger2 // 開(kāi)啟Swaggerpublic class SwaggerConfig {// ? 配置Docket的bean實(shí)例 ? ?@Bean ? ?public Docket docket(Environment environment){ ? ? ? ?return new Docket(DocumentationType.SWAGGER_2) ? ? ? ? ? ? ? .apiInfo(apiInfo()) ? ? ? ? ? ? ? .enable(true)// enable是否啟動(dòng)Swagger,如果False,則Swagger不能再瀏覽器中訪問(wèn) ? ? ? ? ? ? ? .groupName("yangjun")// 配置API分組 ? ? ? ? ? ? ? .select()// ? ? ? ? ? ? ? RequestHandlerSelectors,配置掃描接口的方式// ? ? ? ? ? ? ? basePackage:指定要掃描的包// ? ? ? ? ? ? ? any():掃描全部// ? ? ? ? ? ? ? none():不掃描// ? ? ? ? ? ? ? withClassAnnotation:掃描類(lèi)上的注解,參數(shù)是一個(gè)注解的反射對(duì)象// ? ? ? ? ? ? ? withMethodAnnotation:掃描方法上的注解 ? ? ? ? ? ? ? .apis(RequestHandlerSelectors.basePackage("com.example.controller"))// ? ? ? ? ? ? ? paths 過(guò)濾路徑 ? ? ? ? ? ? ? ?//.path(PathSelectors.ant("/example/**")) ? ? ? ? ? ? ? .build(); ? }// ? 配置Swagger信息=apiInfo ? ?private ApiInfo apiInfo() {// ? ? 作者信息 ? ? ? ?Contact contact = new Contact("作者:XX","作者QQ空間","作者Email"); ? ? ? ?return new ApiInfo("測(cè)試SwaggerApi文檔" ? ? ? ,"好好學(xué)習(xí),天天向上", ? ? ? ? ? ? ? ?"V0.1", ? ? ? ? ? ? ? ?"團(tuán)隊(duì)文檔地址", ? ? ? ? ? ? ? ?contact, ? ? ? ? ? ? ? ?"Apache2.0", ? ? ? ? ? ? ? ?"Apache2.0地址", ? ? ? ? ? ? ? ?new ArrayList<>()); ? }}問(wèn)題來(lái)了:
如果我們只在測(cè)試環(huán)境中使用,而不在生產(chǎn)環(huán)境中使用該怎么辦?
?enable(true)// enable是否啟動(dòng)Swagger,如果False,則Swagger不能再瀏覽器中訪問(wèn)判斷當(dāng)前的環(huán)境
設(shè)置enable(true)值
配置分組
配置多個(gè)實(shí)例即可
?@Beanpublic Docket docket1(){return new Docket(DocumentationType.SWAGGER_2).groupName("測(cè)試分組1");}@Beanpublic Docket docket2(){return new Docket(DocumentationType.SWAGGER_2).groupName("測(cè)試分組2");}API使用:
涉及到的5個(gè)注解
@Api(tags = "類(lèi)"):加在類(lèi)上
@ApiOperation:加在方法上
@ApiParam("用戶名"):加在參數(shù)上
@ApiModel("用戶實(shí)體類(lèi)"):加在實(shí)體類(lèi)上
@ApiModelProperty("用戶名"):加在字段上
1.@Api的使用
在類(lèi)上使用主要來(lái)闡述這個(gè)類(lèi)的作用
?@Api(tags = "TestController測(cè)試類(lèi)")@RestControllerpublic class TestController { ? ?@RequestMapping(value = "/hello",method = RequestMethod.GET) ? ?public String hello(){ ? ? ? ?return "hello swagger2"; ? }}2.@ApiOperation的使用
在方法上使用主要來(lái)闡述這方法的用戶以及需要傳入那些參數(shù)和類(lèi)型
?@Api(tags = "TestController測(cè)試類(lèi)")@RestControllerpublic class TestController { ? ?@RequestMapping(value = "/hello",method = RequestMethod.GET) ? ?public String hello(){ ? ? ? ?return "hello swagger2"; ? } ? ?@ApiOperation("測(cè)試控制類(lèi)1") ? ?@PostMapping("/user1") ? ?public String getUser2(@ApiParam("用戶名") User user){ ? ? ? ?return user.toString(); ? }}3.@ApiParam的使用
定義用戶輸入?yún)?shù)的格式,不用在拼接字符串,Swagger會(huì)自動(dòng)配置好,我們只要填入?yún)?shù)測(cè)試
?@Api(tags = "TestController測(cè)試類(lèi)")@RestControllerpublic class TestController { ? ?@RequestMapping(value = "/hello",method = RequestMethod.GET) ? ?public String hello(){ ? ? ? ?return "hello swagger2"; ? } ? ?@ApiOperation("測(cè)試控制類(lèi)1") ? ?@PostMapping("/user1") ? ?public String getUser2(@ApiParam("用戶名") User user){ ? ? ? ?return user.toString(); ? }}4.@ApiModel和@ApiModelProperty的使用
在實(shí)體類(lèi)使用,提供每個(gè)字段名和類(lèi)型,關(guān)鍵可以和MybatisPlus一起使用,只要在數(shù)據(jù)庫(kù)中定義好字段的備注,使用MP的代碼自動(dòng)生成就OK了
?@Data@ApiModel("用戶實(shí)體類(lèi)")public class User { ? ?@ApiModelProperty("用戶名") ? ?private String name; ? ?@ApiModelProperty("用戶密碼") ? ?private String password;}總結(jié):
1.在開(kāi)發(fā)過(guò)程中對(duì)接口更新更快
2.能夠快速導(dǎo)出API文檔
3.不用第三方工具即可測(cè)試接口
完整代碼:
https://gitee.com/hahaguai007/springboot-swagger2.git點(diǎn)亮 ,告訴大家你也在看
總結(jié)
以上是生活随笔為你收集整理的freemarker使用说明_SpringBoot+Swagger2集成详细说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 学习vim 从常用按键开始
- 下一篇: gradle idea java ssm