SpringBoot整合Swagger 自動生成在線API文檔 偷懶必備,同時也是咱們的基本操做啦!!!

如今大都數項目都已經是先後端分離的啦,那麼接口文檔就成了項目中很是重要的一部分啦,SpringBoot整合Swagger能夠自動生成RESTFUL風格的API文檔,也能夠在其中進行測試,比起之前手寫的文檔,不只方便不少,並且也易於修改和測試。html

很喜歡一句話:」八小時內謀生活,八小時外謀發展「前端

咱們:"待別日相見時,都已有所成」😁java

好的天氣,好的心情程序員

1、前言

1)引入

如今小夥伴學習SpringBoot大都數是先後端開發的,這個API接口文檔真的不可缺乏的一部分。web

咱們開發好項目-->啓動-->測試-->前端查看API文檔-->數據渲染。用Swagger能夠不用寫本身寫了,能夠直接在代碼中聲明,很是方便,也易於更改。 我這個東東能夠直接CV哈,沒啥特殊的,直接能夠跑起來滴。😁😁😁spring

2)介紹

Swagger 是一個用於生成、描述和調用 RESTful 接口的 Web 服務。通俗的來說,Swagger 就是將項目中全部(想要暴露的)接口展示在頁面上,而且能夠進行接口調用和測試的服務。apache

3)做用

  1. 將項目中全部的接口展示在頁面上,這樣後端程序員就不須要專門爲前端使用者編寫專門的接口文檔;
  2. 當接口更新以後,只須要修改代碼中的 Swagger 描述就能夠實時生成新的接口文檔了,從而規避了接口文檔老舊不能使用的問題
  3. 經過 Swagger 頁面,咱們能夠直接進行接口調用,下降了項目開發階段的調試成本

2、快速開始

案例:後端

寫一個RESTFUL風格的增刪改查哈,而後展現接口哈。api

2.一、步驟:

  1. 新建一個SpringBoot項目
  2. 導入依賴
  3. 書寫配置
  4. 編碼
  5. 啓動測試 -->完事👨‍💻(繼續摸魚)

2.二、導入依賴:

<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.三、yml配置文件

server:
  port: 8088
spring:
  application:
    name: springboot-swagger
swagger:
  enable: true
複製代碼

2.四、SwaggerConfig配置類

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;

/** * @version 1.0 * @author: crush * @date: 2020-12-01 10:48 * @EnableSwagger2 啓動使用Swagger2 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    // 經過配置文件中這個變量的值來開啓或關閉
    @Value("${swagger.enable}")
    private Boolean enable;

    @Bean
    public Docket docket(Environment environment) {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(enable)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.crush.swagger"))
                .build();
    }

    public ApiInfo apiInfo() {
        // 這裏是做者信息及文檔的基本信息 和頁面展現信息一一對照便可 
        Contact contact = new Contact("springboot-swagger ", "https://blog.csdn.net/weixin_45821811?spm=1011.2124.3001.5343", "951930136@qq.com");
        return new ApiInfo(
                "springboot-swagger Demo API接口文檔",
                "此處填寫描述信息",
                "1.0",
                "urn:tos",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList()
        );
    }
}
複製代碼

2.四、實體類

@Data
@Accessors(chain = true)
@ApiModel(description = "帳戶相關信息類")
public class Account {

    @ApiModelProperty("帳號")
    private String username;

    @ApiModelProperty("密碼")
    private String password;
}
複製代碼

2.五、Service層

public interface AccountService {

    /** * 註冊 * @param account * @return */
    boolean register(Account account);

    /** * 查詢所有 */
    List<Account> select();   
}
複製代碼

impl:我此處只是用了靜態變量模擬了一下~~(太懶啦捂臉)~~springboot

@Service
public class AccountServiceImpl implements AccountService {

    private static List<Account> accountList = new ArrayList<Account>();

    @Override
    public boolean register(Account account) {
        accountList.add(account);
        return true;
    }

    @Override
    public List<Account> select() {
        return accountList;
    }
}
複製代碼

2.六、Controller

@Api(tags = "帳戶相關接口")
@RestController
@RequestMapping("/account")
public class AccountController {

    private final AccountService accountService;

    public AccountController(AccountService accountService) {
        this.accountService = accountService;
    }

    @ApiOperation("註冊接口")
    @PostMapping("/register")
    public String register(@RequestBody @ApiParam(required = true, value = "註冊帳戶須要的信息") Account account) {
        accountService.register(account);
        return "OK";
    }

    @ApiOperation("查詢所有")
    @GetMapping
    public List<Account> select() {
        return accountService.select();
    }
}
複製代碼

啓動類就是普普統統的沒啥特殊的,讓咱們直接開始吧。

@Slf4j
@SpringBootApplication
public class SpringBootSwagger {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootSwagger.class);
        log.info("API接口訪問連接:http://localhost:8088/swagger-ui.html");
    }
}

複製代碼

3、測試

初始信息:

啓動以後輸入:就能看到頁面

http://localhost:8088/swagger-ui.html
複製代碼

在這裏插入圖片描述

以前配置的相關信息就也會所有展現在上面。

接口:

咱們點開接口看一下

在這裏插入圖片描述

測試:

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

而後咱們經過咱們的查詢接口也可以查詢到了

在這裏插入圖片描述

完事啦,摸魚啦摸魚啦👨‍💻

4、Swagger VS PostMan

Swagger的優勢:

  • 便於更改,易讀簡單明瞭,很是方便。

缺點:

  • 缺點:也很明,就是不可以自動化,每次都須要本身輸入數據,這點很很差。
  • 可是Swagger是能夠把API導入到Postman中的。下篇文章講(狗頭保命🙆‍♂️)

Postaman的優勢:

  1. 能夠自動化測試。
  2. 能夠設計數據集,不用本身輸入,能夠保存環境變量。

缺點我我沒雜感受到。

結論:對於咱們來說,不管是Swagger和PostMan都是須要掌握的,這是最基本最基本的要求。

5、自言自語

你好,我是博主寧在春😁

若是你看到這篇文章,而且以爲對你有益的話,就給個贊吧,讓我感覺一下分享的喜悅吧,蟹蟹。🤗

如如有寫的有誤的地方,也請你們不嗇賜教!!

一樣如如有存在疑惑的地方,請留言或私信,定會在第一時間回覆你。

持續更新中

相關文章
相關標籤/搜索