微服務學習二:springboot與swagger2的集成


現在測試都提倡自動化測試,那我們作為后台的開發人員,也得進步下啊,以前用postman來測試后台接口,那個麻煩啊,一個字母輸錯就導致測試失敗,現在swagger的出現可謂是拯救了這些開發人員,便捷之處真的不是一點兩點。下面我們看下如何在微服務中將springboot與swagger來結合吧。

1、swagger是什么,這個我覺得凡是一個開發人員就應該知道度娘啊,絕對強大。

簡單說下,它的出現就是為了方便進行測試后台的restful形式的接口,實現動態的更新,當我們在后台的接口修改了后,swagger可以實現自動的更新,而不需要認為的維護這個接口進行測試。

2、springboot與swagger的集成:

第一步:jar包的引入:

關於jar包的引入出現了一個問題就是版本的問題,可能需要與你的編輯器或者jdk要匹配吧,試了幾個才最終成功導入jar。

第二步:swagger的配置啟動類編寫:

要使用swagger要進行一些配置,這個在界面的圖上是可以顯示的:類似於說明書:在這個類中我們會使用注解來進行啟動swagger:

具體配置如下:

package com.springboot.example;




//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的配置文件,這里可以配置swagger2的一些基本的內容,比如掃描的包等等
	@Bean
	public Docket createRestApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo())
				.select()
				//為當前包路徑
				.apis(RequestHandlerSelectors.basePackage("com.springboot.example.Controller"))
				.paths(PathSelectors.any())
				.build();
	}
	//構建 api文檔的詳細信息函數,注意這里的注解引用的是哪個
	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
				//頁面標題
				.title("Spring Boot 測試使用 Swagger2 構建RESTful API")
				//創建人
				.contact(new Contact("MarryFeng", "http://www.baidu.com", ""))
				//版本號
				.version("1.0")
				//描述
				.description("API 描述")
				.build();
	}


}

  這里的坑是:所使用類的引入文件要注意到底是哪個,之前因為這個出錯了,

@Configuration
@EnableSwagger2
這兩個注解,一個是swagger2的配置,一個是項目啟動的時候啟動swagger2.
具體什么意思看下代碼就知道了。
//為當前包路徑
.apis(RequestHandlerSelectors.basePackage("com.springboot.example.Controller"))
這個包指的是我們在哪些類中使用swagger2來測試。

第三步:使用swagger來進行模擬測試:

使用swagger2來進行測試接口主要是在哪些類中使用:這里我們依然選擇在controller層:

package com.springboot.example.Controller;

import com.springboot.example.Service.StudentService;
import com.springboot.example.entity.Student;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created by Administrator on 2017/9/13.
 */
@RestController
@RequestMapping("api")
@Api("swaggerDemoController相關的api")
public class SwaggerDemoController {
    @Autowired
    private StudentService studentService;

    private static final Logger logger= LoggerFactory.getLogger(SwaggerDemoController.class);


    @ApiOperation(value = "根據id查詢學生信息", notes = "查詢數據庫中某個的學生信息")
    @ApiImplicitParam(name = "id", value = "學生ID", paramType = "path", required = true, dataType = "Integer")
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public Student getStudent(@PathVariable int id) {
        logger.info("開始查詢某個學生信息");
        return studentService.selectStudentById(id);
    }


}

 

上面這些可以看下具體的注解是什么意思:

這樣swagger2與springboot就集成完畢了。

看下最終效果吧:

訪問路徑:

http://localhost:8080/swagger-ui.html

輸入id后,我們可以看到查詢結果:、

是不是很方便,我們不用像postman一樣來編寫入口,swagger2自動完成:

而且實時更新:

是不是很方便!

至此swagger2與springboot的集成完畢。

 
        

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM