springboot + swagger 註解
swagger用於定義API文件。
好處:
- 前後端分離開發
- API文件非常明確
- 測試的時候不需要再使用URL輸入瀏覽器的方式來訪問Controller
- 傳統的輸入URL的測試方式對於post請求的傳參比較麻煩(當然,可以使用postman這樣的瀏覽器外掛)
- spring-boot與swagger的整合簡單的一逼
1、專案結構
和上一節一樣,沒有改變。
2、pom.xml
引入了兩個jar。
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.2.2</version> </dependency>
3、Application.java
package com.xxx.firstboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication //same as @[email protected][email protected]
@EnableSwagger2 //啟動swagger註解
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
說明:
- 引入了一個註解@EnableSwagger2來啟動swagger註解。(啟動該註解使得用在controller中的swagger註解生效,覆蓋的範圍由@ComponentScan的配置來指定,這裡預設指定為根路徑"com.xxx.firstboot"下的所有controller)
4、UserController.java
package com.xxx.firstboot.web;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.xxx.firstboot.domain.User;
import com.xxx.firstboot.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
@RestController
@RequestMapping("/user")
@Api("userController相關api")
public class UserController {
@Autowired
private UserService userService;
// @Autowired
// private MyRedisTemplate myRedisTemplate;
@ApiOperation("獲取使用者資訊")
@ApiImplicitParams({
@ApiImplicitParam(paramType="header",name="username",dataType="String",required=true,value="使用者的姓名",defaultValue="zhaojigang"),
@ApiImplicitParam(paramType="query",name="password",dataType="String",required=true,value="使用者的密碼",defaultValue="wangna")
})
@ApiResponses({
@ApiResponse(code=400,message="請求引數沒填好"),
@ApiResponse(code=404,message="請求路徑沒有或頁面跳轉路徑不對")
})
@RequestMapping(value="/getUser",method=RequestMethod.GET)
public User getUser(@RequestHeader("username") String username, @RequestParam("password") String password) {
return userService.getUser(username,password);
}
}
說明:
- @Api:用在類上,說明該類的作用
- @ApiOperation:用在方法上,說明方法的作用
- @ApiImplicitParams:用在方法上包含一組引數說明
- @ApiImplicitParam:用在@ApiImplicitParams註解中,指定一個請求引數的各個方面
- paramType:引數放在哪個地方
- header-->請求引數的獲取:@RequestHeader
- query-->請求引數的獲取:@RequestParam
- path(用於restful介面)-->請求引數的獲取:@PathVariable
- body(不常用)
- form(不常用)
- name:引數名
- dataType:引數型別
- required:引數是否必須傳
- value:引數的意思
- defaultValue:引數的預設值
- paramType:引數放在哪個地方
- @ApiResponses:用於表示一組響應
- @ApiResponse:用在@ApiResponses中,一般用於表達一個錯誤的響應資訊
- code:數字,例如400
- message:資訊,例如"請求引數沒填好"
- response:丟擲異常的類
- @ApiModel:描述一個Model的資訊(這種一般用在post建立的時候,使用@RequestBody這樣的場景,請求引數無法使用@ApiImplicitParam註解進行描述的時候)
- @ApiModelProperty:描述一個model的屬性
以上這些就是最常用的幾個註解了。
需要注意的是:
- ApiImplicitParam這個註解不只是註解,還會影響執行期的程式,例子如下:
如果ApiImplicitParam中的phone的paramType是query的話,是無法注入到rest路徑中的,而且如果是path的話,是不需要配置ApiImplicitParam的,即使配置了,其中的value="手機號"也不會在swagger-ui展示出來。
具體其他的註解,檢視:
測試:
啟動服務,瀏覽器輸入"http://localhost:8080/swagger-ui.html"
最上邊一個紅框:@Api
GET紅框:method=RequestMethod.GET
右邊紅框:@ApiOperation
parameter紅框:@ApiImplicitParams系列註解
response messages紅框:@ApiResponses系列註解
輸入引數後,點選"try it out!",檢視響應內容:
相關推薦
springboot + swagger 註解
swagger用於定義API文件。 好處: 前後端分離開發API文件非常明確測試的時候不需要再使用URL輸入瀏覽器的方式來訪問Controller傳統的輸入URL的測試方式對於post請求的傳參比較麻煩(當然,可以使用postman這樣的瀏覽器外掛)spring-boo
SpringBoot雞湯(註解集合二)
lis aps clas lap cti boot value 請求 app 1.@NotNull :屬性值不為空 2.@Profiles @Configuration @Profile("production") public class Production
springboot的註解詳解
ica prope pan span 配置 作用 cat fix 文件中 配置類相關: @PropertySource(value = "classpath:test.properties") //我們都把配置文件寫到application.yml中。有時我們不願意把
SpringBoot利用註解@Value獲取properties屬性為null
pro 解決 autowired dfs stat info 如何 一個 去掉 參考:https://www.cnblogs.com/zacky31/p/8609990.html 今天在項目中想使用@Value來獲取Springboot中properties中屬性值。
Springboot 常用註解
RF head rest服務 請求 false val bean api time @SpringBootApplication: 包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主類上。 很多Spri
springboot swagger api管理
.com cat 創建 暴露 mave cati boot 方法 img 一 引入maven包 二 創建SwaggerConfig類 三 暴露資源 四 攔截器過濾 五 ServiceApplication添加註解 六 類和方法註解 七 啟動項目訪問http:
SpringBoot —— AOP註解式攔截與方法規則攔截
運行 處理程序 return 編譯 clear 字節碼 動態獲取 nconf {} AspectJ是一個面向切面的框架,它擴展了Java語言。AspectJ定義了AOP語法,所以它有一個專門的編譯器用來生成遵守Java字節編碼規範的Class文件。 SpringBo
springboot+swagger
version spa ann require desc 其中 pid quest ignore 一、引入依賴 <dependency> <groupId>io.springfox</groupId>
springboot @vaule註解失效解決辦法
zed 便在 pub one div sync lose 方法 問題 在Controller類裏面通過@Value將參數註入進來,最後的確成功了。因此基於此經驗,我便在其他使用的類裏面也采用這樣的方式註入參數,但是發現去失效了,報錯為NULL,說明參數並沒有我們料想的被註入
SpringBoot | 問題 | 註解方式下無法發現Bean
ati art -- cat target blank boot tps 方式 在排除註解的問題後,考慮掃描類的位置, 【SpringBoot項目的Bean裝配默認規則是根據Application類所在的包位置從上往下掃描! “Application類”是指SpringBo
spring和springboot常用註解總結
普通 map 組件 構造 sca service 提交 依賴 demo1 @RequestMapping 這個註解可以用於類和方法上,用於類上,表示父路徑,如類上是demo,方法上是/demo1,那麽訪問路徑就是demo/demo1 該註解有六個屬性:params:指定re
springBoot @Enable*註解的工作原理
圖解 tor def sys autoconf 屬性註入 erb ota efi 使用註解實現異步 RunnableDemo類 package com.boot.enable.bootenable; import org.springframework.schedu
SpringBoot使用註解形式定時執行同步任務
1、SpringBoot定時執行同步任務可以使用org.springframework.scheduling包下的@EnableScheduling以及@Scheduled註解來實現,程式碼如下: @Configuration @EnableScheduling public class S
springboot swagger配置,Unable to infer base url,攔截器問題
swagger配置很簡單,但是,因為使用到了攔截器,所以,就不簡單了,剛開始怎麼也不能顯示介面列表,後來才發現是攔截器的問題,然後就各種方法的試試。剛開始是配置webmvc的靜態資源類來過濾,但是後來發現還是不行。 後來仔細想想,配置了靜態資源過濾,但是攔截器與這個什麼webmvcconfigu
SpringBoot 常用註解(持續更新)
SpringBoot 常用註解 @SpringBootApplication @Bean @ComponentScan @ControllerAdvice @ExceptionHandler @ResponseBody @Qualifier 注入(@Autowired和@R
Swagger 註解說明
1 @Api() 用於類;表示標識這個類是swagger的資源 2 tags–表示說明 3 value–也是說明,可以使用tags替代 4 5 @ApiOperation() 用於方法;表示一個http請求的操作 6 value用於方法描述 7 notes用於提示內容 8
springboot基本註解
宣告Bean的註解: @Component元件 @Service service層 @Respository dao層 @Controller 注入Bean的註解: @Autowired Spring提供的註解 @Inject JSR-330提供的註解 @Resource JSR-
基於springboot實現註解形式的mybatis
1.首先是用到的兩個工具類: package com.wangyu.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.
springboot+swagger+版本控制(文末附demo)
背景: Swagger不做過多介紹了,本篇為大家介紹下springboot+swagger下api介面的版本控制。(文末提供demo下載) 通常情況下服務上線後,會不停的迭代版本(BUG、新需求等),如果沒有控制好版本
SpringMVC整合Swagger外掛以及Swagger註解的簡單使用
一、簡介 Swagger 是一個規範和完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。總體目標是使客戶端和檔案系統作為伺服器以同樣的速度來更新 。介面的方法,引數和模型緊密整合到伺服器端的程式碼,允許API來始終保持同步。Swagger 讓部署管理和使用功能