国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SpringBoot 2.X Kotlin與Swagger2生成API文檔

cyqian / 2994人閱讀

摘要:再通過函數創建的之后,用來創建該的基本信息這些基本信息會展現在文檔頁面中。函數返回一個實例用來控制哪些接口暴露給來展現,本例采用指定掃描的包路徑來定義,會掃描該包下所有定義的,并產生文檔內容除了被指定的請求。

這里有個地方需要注意,在測試WebFlux集成Swagger2的時候存在問題,看了官方文檔現在2.9.2還沒有集成,所以引入的jar是spring-boot-starter-web,而不是spring-boot-starter-webflux
本章目的

在項目中集成文檔及接口測試平臺,使用Swagger2可以快速幫助我們編寫最新的API接口文檔,再也不用擔心開會前仍忙于整理各種資料了,間接提升了團隊開發的溝通效率。

添加Swagger2依賴

pom.xml中加入Swagger2的依賴


    io.springfox
    springfox-swagger2
    2.9.2


    io.springfox
    springfox-swagger-ui
    2.9.2
創建Swagger2配置
package io.intodream.kotlin04.config

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

/**
 * @description
 * 構建一個Swagger2配置文件
 * @author Jwenk
 * @copyright intoDream.io 筑夢科技
 * @email xmsjgzs@163.com
 * @date 2019-03-31,21:55
 */
@Configuration
@EnableSwagger2
class Swagger2Config {

    @Bean
    fun createRestApi(): Docket {
        return Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
    }

    private fun apiInfo(): ApiInfo {
        return ApiInfoBuilder()
                .title("Spring Boot2.X Kotlin 中使用Swagger2構建RESTFul APIs")
                .description("更多SpringBoot2.X Kotlin 文章請關注:惜魚博客")
                .termsOfServiceUrl("https://www.intodream.io")
                .contact(Contact("惜魚", "https://www.tisnz.com", "xmsjgzs@163.com"))
                .version("1.0.0")
                .build()
    }
}

如上代碼所示,通過@Configuration注解,讓Spring來加載該類配置。再通過@EnableSwagger2注解來啟用Swagger2。

再通過createRestApi函數創建Docket的Bean之后,apiInfo()用來創建該Api的基本信息(這些基本信息會展現在文檔頁面中)。select()函數返回一個ApiSelectorBuilder實例用來控制哪些接口暴露給Swagger來展現,本例采用指定掃描的包路徑來定義,Swagger會掃描該包下所有Controller定義的API,并產生文檔內容(除了被@ApiIgnore指定的請求)。

編寫文檔內容

在完成上面的配置后,其實Swagger會自動幫我們生成API的文檔,但是自動生成的文檔顯示并不友好,我們通常需要添加一些額外的信息,這時候就需要通過@ApiOperation注解在API上增加說明,通過@ApiImplicitParams、@ApiImplicitParam注解來給參數增加說明。

package io.intodream.kotlin04.web

import io.intodream.kotlin04.model.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.web.bind.annotation.*
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ConcurrentMap

/**
 * @description
 *
 * @author Jwenk
 * @copyright intoDream.io 筑夢科技
 * @email xmsjgzs@163.com
 * @date 2019-03-31,22:07
 */
@Api(value = "學生信息相關接口", tags = ["學生"])
@RestController
@RequestMapping("/api/student")
class StudentController {

    private var repository : ConcurrentMap = ConcurrentHashMap()
    private val logger : Logger = LoggerFactory.getLogger(this.javaClass)

    @ApiOperation(value = "保存一條學生信息")
    @ApiImplicitParam(name = "student", value = "學生詳細實體student", required = true, dataType = "Student")
    @PostMapping("/")
    fun save(@RequestBody student: Student): Student? {
        logger.info("請求參數:{}", student)
        return repository.put(student.id, student)
    }

    @ApiOperation(value = "獲取學生列表")
    @GetMapping("/list")
    fun listStudent():List {
        val studentList = ArrayList(repository.values)
        logger.info("返回數據:{}", studentList)
        return studentList
    }

    @ApiOperation(value = "通過學生編號獲取學生詳細信息")
    @ApiImplicitParam(name = "studentId", value = "學生編號", required = true, dataType = "String")
    @GetMapping("/info")
    fun studentInfo(@RequestParam studentId: String): Student? {
        val student : Student? = repository.get(studentId)
        logger.info("studentId:{}, 對應的數據:{}", student)
        return student
    }

    @ApiImplicitParam(name = "studentId", value = "學生編號", required = true, dataType = "String")
    @ApiOperation(value = "刪除學生信息")
    @DeleteMapping("/")
    fun deleteStudent(@RequestParam studentId: String): String {
        logger.info("刪除學生編號:{}", studentId)
        repository.remove(studentId)
        return "success"
    }
}

完成上述代碼添加上,啟動Spring Boot程序,訪問:http://localhost:8080/swagger-ui.html。就能看到前文所展示的RESTful API的頁面。我們可以再點開具體的API請求,以POST類型的/api/student/請求為例,可找到上述代碼中我們配置的Notes信息以及參數student的描述信息,如下圖所示。


API文檔訪問與調試

在上圖請求的頁面中,我們看到student的Example Value是個輸入框?是的,Swagger除了查看接口功能外,還提供了調試測試功能,我們可以點擊上圖中右側的Model Schema(黃色區域:它指明了User的數據結構),此時Example Value中就有了student對象的模板,我們只需要稍適修改,點擊下方“Try it out!”按鈕,即可完成了一次請求調用!

到此我們集成Swagger2就完成了,大家可以多測試一下看返回結果是否正確,感覺是不是寫接口文檔方便了很多呢。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74093.html

相關文章

  • Kotlin + Spring Boot : 下一代 Java 服務端開發 》

    摘要:下一代服務端開發下一代服務端開發第部門快速開始第章快速開始環境準備,,快速上手實現一個第章企業級服務開發從到語言的缺點發展歷程的缺點為什么是產生的背景解決了哪些問題為什么是的發展歷程容器的配置地獄是什么從到下一代企業級服務開發在移動開發領域 《 Kotlin + Spring Boot : 下一代 Java 服務端開發 》 Kotlin + Spring Boot : 下一代 Java...

    springDevBird 評論0 收藏0
  • SpringBoot 實戰 (五) | 集成 Swagger2 構建強大的 RESTful API

    摘要:今天給你們帶來集成的教程。接口返回結果不明確。這些痛點在前后端分離的大型項目上顯得尤為煩躁。接口返回結果非常明確,包括數據類型,狀態碼,錯誤信息等。生成后的文件依賴如下這里使用的是的版本。另外,關注之后在發送可領取免費學習資料。 微信公眾號:一個優秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 快過年了,不知道你們啥時候放年假,忙不忙。反正我是挺閑的,所以有時間寫 b...

    Rindia 評論0 收藏0
  • SpringBoot非官方教程 | 第十一篇:SpringBoot集成swagger2,構建優雅的R

    摘要:另外很容易構建風格的,簡單優雅帥氣,正如它的名字。配置一些基本的信息。三寫生產文檔的注解通過注解表明該接口會生成文檔,包括接口名請求方法參數返回信息的等等。四參考資料中使用構建強大的文檔 swagger,中文拽的意思。它是一個功能強大的api框架,它的集成非常簡單,不僅提供了在線文檔的查閱,而且還提供了在線文檔的測試。另外swagger很容易構建restful風格的api,簡單優雅帥氣...

    荊兆峰 評論0 收藏0

發表評論

0條評論

cyqian

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<