1. 程式人生 > 其它 >有了Swagger2,再也不用為寫Api文件頭疼了

有了Swagger2,再也不用為寫Api文件頭疼了

1、為什麼要寫Api文件

現在,前後端分離的開發模式已經非常流行,後端開發工程師只負責完成後端介面,前端頁面的開發和渲染完全由前端工程師完成。

問題來了,前端工程師怎麼知道後端介面的具體定義呢?答案是由後端工程師撰寫。

2、寫Api文件很頭疼嗎

答案是一定的,這對後端工程師來說,是額外的工作,編碼已經很耗費精力了,這時前端工程師來催文件,不頭疼才怪:),當然這也不是前端工程師的問題,都是為專案的進度著急。

3、Swagger2

現在好了,一個自動撰寫Api文件的神器出現了,他就是 Swagger2,Swagger2通過美觀的WEB介面展示了所有介面的定義,非常方便,還能直接在介面上進行測試呼叫,有助於除錯。

後端工程師,定義好介面,加幾個註解,便能自動生成線上介面定義,前端工程師可以實時的看到。

下面就來講講如何把 Swagger2 整合到專案中來。

4、介面介紹

這裡以一個簡單的介面作為例子,介面的功能是輸入使用者ID,獲取使用者資料。

5、引入依賴

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

6、增加Swagger2配置類

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
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; @Configuration @EnableSwagger2 public class Swagger2 { // swagger2配置 @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) // 指定api型別為swagger2 .apiInfo(apiInfo()) // 用於定義api文件彙總資訊 .select() .apis(RequestHandlerSelectors .basePackage("cn.zhuifengren.controller")) // 指定掃描的controller包 .paths(PathSelectors.any()) // 所有controller .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("hello工程介面api") // 文件頁標題 .contact(new Contact("hello", "", "")) // 聯絡人資訊 .description("專為hello工程提供的api文件") // 詳細資訊 .version("1.0.0") // 文件版本號 .termsOfServiceUrl("") // 網站地址 .build(); } }

7、在Controller類中增加Swagger2註解

import cn.zhuifengren.model.Result;
import cn.zhuifengren.model.User;
import cn.zhuifengren.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
@Api(value = "UserController", tags = "使用者介面")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/info/{id}")
    @ApiOperation(value = "獲取使用者資訊")
    public Result<User> getUserInfo(@ApiParam(value = "使用者ID") @PathVariable("id") String id) {

        User userInfo = userService.getUserInfo(id);
        Result<User> result = new Result<>();
        result.setCode(200);
        result.setMessage("success");
        result.setData(userInfo);

        return result;
    }

}

https://www.cnblogs.com/w84422/p/15194549.html

故鄉明