中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Swagger與SpringBoot

發布時間:2021-10-14 11:49:23 來源:億速云 閱讀:164 作者:iii 欄目:編程語言

本篇內容主要講解“如何使用Swagger與SpringBoot”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用Swagger與SpringBoot”吧!

(一)引言

我的第一份工作用的技術架構比較老,在寫Api接口的時候都是自己手動寫一個接口文檔。但是一旦接口多了,這些文檔就很難管理。我現在的工作在應用層面使用了SpringBoot,項目中也大量用到了Swagger2。我個人感覺Swagger的厲害之處在于極少的配置和幾個注解就可以生成一份完善的技術文檔,將維護文檔和修改代碼整合為一體,節省了大量時間。

(二)Swagger與SpringBoot的整合

Swagger的使用很簡單,這里通過一個簡單的例子進行展示

(2.1)引入依賴

先需要創建一個Springboot項目,并引入Swagger2的相關依賴:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

(2.2)創建實體類

因為項目比較簡單,實現User類的增刪改查API接口,因此全部放在一個文件夾之下,創建User.java,這里用到了swagger對于實體類的兩個注解@ApiModel和@ApiModelProperty,分別表示實體類的含義以及屬性的含義。

@Data
@ApiModel("用戶實體類")
public class User {
    @ApiModelProperty("id")
    private Long id;
    @ApiModelProperty("name")
    private String name;
    @ApiModelProperty("age")
    private Integer age;
}

(2.3)創建Swagger2配置文件

swagger的配置主要基本的展示信息以及掃描信息,其中@Configuration注解使得Spring啟動該配置類,@EnableSwagger2啟動Swagger2

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                //創建api基本信息
                .apiInfo(apiInfo())
                .select()
                //RequestHandlerSelectors.basePackage指定掃描的包路徑
                //RequestHandlerSelectors.any():掃描全部
                //RequestHandlerSelectors.none():不掃描
                //RequestHandlerSelectors.withClassAnnotation():掃描類上的注解
                //RequestHandlerSelectors.withMethodAnnotation():掃描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.javayz.swaggerdemo.controller"))
                //過濾什么路徑
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Java魚仔的SwaggerAPI文檔")
                .description("你會累因為你在走上坡路")
                .termsOfServiceUrl("https://blog.csdn.net/qq_41973594")
                .contact(new Contact("Java魚仔","https://blog.csdn.net/qq_41973594","974474148@qq.com"))
                .version("1.0")
                .build();
    }
}

ApiInfo中的參數如下所示:

如何使用Swagger與SpringBoot

(2.4)創建Controller,定義API

@Api(value = "用戶信息管理")
@RestController
@RequestMapping(value="/users")
public class UserController {

    //創建一個線程安全的map
    static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());

    //獲取User列表
    @ApiOperation(value="獲取用戶列表", notes="")
    @RequestMapping(value={""}, method= RequestMethod.GET)
    public List<User> getUserList() {
        List<User> r = new ArrayList<User>(users.values());
        return r;
    }
    //根據用戶id刪除用戶
    @ApiOperation(value = "刪除用戶",notes = "根據id刪除用戶")
    @ApiImplicitParam(name = "id",value = "輸入用戶id",required = true,dataType = "Long")
    @RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
    public String DeleteList(@PathVariable Long id){
        users.remove(id);
        return "success";
    }
    //創建用戶
    @ApiOperation(value="創建用戶", notes="根據User對象創建用戶")
    @ApiImplicitParam(name = "user", value = "用戶詳細實體user", required = true, dataType = "User")
    @RequestMapping(value="", method=RequestMethod.POST)
    public String postUser(@RequestBody User user) {
        users.put(user.getId(), user);
        return "success";
    }
    //根據用戶id獲取用戶信息
    @ApiOperation(value="獲取用戶詳細信息", notes="根據url的id來獲取用戶詳細信息")
    @ApiImplicitParam(name = "id", value = "用戶ID", required = true, dataType = "Long")
    @RequestMapping(value="/{id}", method=RequestMethod.GET)
    public User getUser(@PathVariable Long id) {
        return users.get(id);
    }
    //根據指定id更新對象
    @ApiOperation(value="更新用戶詳細信息", notes="根據url的id來指定更新對象,并根據傳過來的user信息來更新用戶詳細信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "用戶ID", required = true, dataType = "Long"),
            @ApiImplicitParam(name = "user", value = "用戶詳細實體user", required = true, dataType = "User")
    })
    @RequestMapping(value="/{id}", method=RequestMethod.PUT)
    public String putUser(@PathVariable Long id, @RequestBody User user) {
        User u = users.get(id);
        u.setName(user.getName());
        u.setAge(user.getAge());
        users.put(id, u);
        return "success";
    }
}

以上代碼乍一看有很多的配置文件,其實實際使用起來很簡單,通過@Api、@ApiOperation注解來給API增加說明、通過@ApiImplicitParams、@ApiImplicitParam注解來給參數增加說明。注解各個參數的功能如下:

@Api:用在請求的類上,表示對類的說明
    tags="說明該類的作用,可以在UI界面上看到的注解"
    value="該參數沒什么意義,在UI界面上也看到,所以不需要配置"
 
@ApiOperation:用在請求的方法上,說明方法的用途、作用
    value="說明方法的用途、作用"
    notes="方法的備注說明"
 
@ApiImplicitParams:用在請求的方法上,表示一組參數說明
    @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一個請求參數的各個方面
        name:參數名
        value:參數的漢字說明、解釋
        required:參數是否必須傳
        paramType:參數放在哪個地方
            · header --> 請求參數的獲取:@RequestHeader
            · query --> 請求參數的獲取:@RequestParam
            · path(用于restful接口)--> 請求參數的獲取:@PathVariable
            · body(不常用)
            · form(不常用)    
        dataType:參數類型,默認String,其它值dataType="Integer"       
        defaultValue:參數的默認值
        
@ApiResponses:用在請求的方法上,表示一組響應
    @ApiResponse:用在@ApiResponses中,一般用于表達一個錯誤的響應信息
        code:數字,例如400
        message:信息,例如"請求參數沒填好"
        response:拋出異常的類
 
@ApiModel:用于響應類上,表示一個返回響應數據的信息
            (這種一般用在post創建的時候,使用@RequestBody這樣的場景,
            請求參數無法使用@ApiImplicitParam注解進行描述的時候)
    @ApiModelProperty:用在屬性上,描述響應類的屬性

(三)運行項目

完成全部代碼之后,啟動SpringBoot項目,在瀏覽器上輸入 http://localhost:8080/swagger-ui.html ,就能看到RESTful API接口界面

如何使用Swagger與SpringBoot

這個界面中可以直接測試接口,每次代碼修改也都會同步到接口文檔中。我們只需要把這個路徑發給前端同學就大功告成了。

到此,相信大家對“如何使用Swagger與SpringBoot”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沂水县| 桃园市| 杂多县| 泰兴市| 北京市| 潜江市| 江陵县| 昌乐县| 乐都县| 普安县| 蕉岭县| 桃江县| 瑞金市| 介休市| 盐边县| 包头市| 班戈县| 招远市| 嘉黎县| 余江县| 千阳县| 通州区| 怀远县| 达日县| 定兴县| 平顶山市| 神池县| 大竹县| 米泉市| 博野县| 呼玛县| 丹东市| 陈巴尔虎旗| 鹰潭市| 通化市| 苏尼特右旗| 盱眙县| 和林格尔县| 章丘市| 海城市| 平塘县|