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

資訊專欄INFORMATION COLUMN

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

cyqian / 2988人閱讀

摘要:再通過函數(shù)創(chuàng)建的之后,用來創(chuàng)建該的基本信息這些基本信息會(huì)展現(xiàn)在文檔頁面中。函數(shù)返回一個(gè)實(shí)例用來控制哪些接口暴露給來展現(xiàn),本例采用指定掃描的包路徑來定義,會(huì)掃描該包下所有定義的,并產(chǎn)生文檔內(nèi)容除了被指定的請(qǐng)求。

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

在項(xiàng)目中集成文檔及接口測試平臺(tái),使用Swagger2可以快速幫助我們編寫最新的API接口文檔,再也不用擔(dān)心開會(huì)前仍忙于整理各種資料了,間接提升了團(tuán)隊(duì)開發(fā)的溝通效率。

添加Swagger2依賴

pom.xml中加入Swagger2的依賴


    io.springfox
    springfox-swagger2
    2.9.2


    io.springfox
    springfox-swagger-ui
    2.9.2
創(chuàng)建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
 * 構(gòu)建一個(gè)Swagger2配置文件
 * @author Jwenk
 * @copyright intoDream.io 筑夢(mèng)科技
 * @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構(gòu)建RESTFul APIs")
                .description("更多SpringBoot2.X Kotlin 文章請(qǐng)關(guān)注:惜魚博客")
                .termsOfServiceUrl("https://www.intodream.io")
                .contact(Contact("惜魚", "https://www.tisnz.com", "xmsjgzs@163.com"))
                .version("1.0.0")
                .build()
    }
}

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

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

編寫文檔內(nèi)容

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

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 筑夢(mèng)科技
 * @email xmsjgzs@163.com
 * @date 2019-03-31,22:07
 */
@Api(value = "學(xué)生信息相關(guān)接口", tags = ["學(xué)生"])
@RestController
@RequestMapping("/api/student")
class StudentController {

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

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

    @ApiOperation(value = "獲取學(xué)生列表")
    @GetMapping("/list")
    fun listStudent():List {
        val studentList = ArrayList(repository.values)
        logger.info("返回?cái)?shù)據(jù):{}", studentList)
        return studentList
    }

    @ApiOperation(value = "通過學(xué)生編號(hào)獲取學(xué)生詳細(xì)信息")
    @ApiImplicitParam(name = "studentId", value = "學(xué)生編號(hào)", required = true, dataType = "String")
    @GetMapping("/info")
    fun studentInfo(@RequestParam studentId: String): Student? {
        val student : Student? = repository.get(studentId)
        logger.info("studentId:{}, 對(duì)應(yīng)的數(shù)據(jù):{}", student)
        return student
    }

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

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


API文檔訪問與調(diào)試

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/74093.html

相關(guān)文章

  • Kotlin + Spring Boot : 下一代 Java 服務(wù)端開發(fā) 》

    摘要:下一代服務(wù)端開發(fā)下一代服務(wù)端開發(fā)第部門快速開始第章快速開始環(huán)境準(zhǔn)備,,快速上手實(shí)現(xiàn)一個(gè)第章企業(yè)級(jí)服務(wù)開發(fā)從到語言的缺點(diǎn)發(fā)展歷程的缺點(diǎn)為什么是產(chǎn)生的背景解決了哪些問題為什么是的發(fā)展歷程容器的配置地獄是什么從到下一代企業(yè)級(jí)服務(wù)開發(fā)在移動(dòng)開發(fā)領(lǐng)域 《 Kotlin + Spring Boot : 下一代 Java 服務(wù)端開發(fā) 》 Kotlin + Spring Boot : 下一代 Java...

    springDevBird 評(píng)論0 收藏0
  • SpringBoot 實(shí)戰(zhàn) (五) | 集成 Swagger2 構(gòu)建強(qiáng)大的 RESTful API

    摘要:今天給你們帶來集成的教程。接口返回結(jié)果不明確。這些痛點(diǎn)在前后端分離的大型項(xiàng)目上顯得尤為煩躁。接口返回結(jié)果非常明確,包括數(shù)據(jù)類型,狀態(tài)碼,錯(cuò)誤信息等。生成后的文件依賴如下這里使用的是的版本。另外,關(guān)注之后在發(fā)送可領(lǐng)取免費(fèi)學(xué)習(xí)資料。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問題。 前言 快過年了,不知道你們啥時(shí)候放年假,忙不忙。反正我是挺閑的,所以有時(shí)間寫 b...

    Rindia 評(píng)論0 收藏0
  • SpringBoot非官方教程 | 第十一篇:SpringBoot集成swagger2,構(gòu)建優(yōu)雅的R

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

    荊兆峰 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<