日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

freemarker使用说明_SpringBoot+Swagger2集成详细说明

發(fā)布時(shí)間:2023/12/10 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 freemarker使用说明_SpringBoot+Swagger2集成详细说明 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)值

?public Docket docket(Environment environment){ ? ?//設(shè)置要顯示的Swagger環(huán)境 ? ?Profiles profiles = Profiles.of("dev","test"); ? ?//通過(guò)environment.acceptsProfiles判斷是否處在自己設(shè)定的環(huán)境當(dāng)中 ? ?boolean flag = environment.acceptsProfiles(profiles); ? ?return new Docket(DocumentationType.SWAGGER_2) ? ? ? .apiInfo(apiInfo()) ? ? ? .enable(flag)// enable是否啟動(dòng)Swagger,如果False,則Swagger不能再瀏覽器中訪問(wèn) ? ? ? .groupName("yangjun")// 配置API分組 ? ? ? .select() ? ? ? .apis(RequestHandlerSelectors.basePackage("com.example.controller")) ? ? ? .build();}

配置分組

配置多個(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。