Kotlin + Spring Boot + Swagger

Kotlin + Spring Boot + Swagger

Swagger



마지막, Kotlin + Spring Boot에서 Hello! World!
에서 만든 프로젝트에 Swagger를 추가합니다.

springfox 추가



build.gradle.kts의 dependencies에 다음을 추가합니다.
compile ("io.springfox:springfox-swagger2:2.9.2")
compile ("io.springfox:springfox-swagger-ui:2.9.2")

dependencies는 다음과 같습니다.

build.gradle.kts
dependencies {
    compile ("io.springfox:springfox-swagger2:2.9.2")
    compile ("io.springfox:springfox-swagger-ui:2.9.2")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
}

EnableSwagger2 추가



SwaggerDemoApplication.kt에 EnableSwagger2 import 및 @EnableSwagger2 어노테이션을 추가합니다.

다음과 같습니다.
※ 만약 여기서 springfox가 해결할 수 없는 에러의 경우는 말미에 대책을 쓰고 있습니다.
package com.example.swagger.demo

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import springfox.documentation.swagger2.annotations.EnableSwagger2


@SpringBootApplication
@EnableSwagger2
class SwaggerDemoApplication

fun main(args: Array<String>) {
    runApplication<SwaggerDemoApplication>(*args)
}

다음에 액세스합니다.
http://localhost:8080/swagger-ui.html

Swagger가 표시되면 성공입니다.



디스플레이 개조



SwaggerDemoApplication.kt



import 추가
import org.springframework.context.annotation.Bean
import springfox.documentation.builders.ApiInfoBuilder
import springfox.documentation.builders.PathSelectors
import springfox.documentation.service.ApiInfo
import springfox.documentation.spi.DocumentationType
import springfox.documentation.spring.web.plugins.Docket
class SwaggerDemoApplication를 다음으로 변경
class SwaggerDemoApplication
{
    @Bean
    fun swaggerDemoApi(): Docket {
        return Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false) // defaultのResponse Code/Messageを表示しない
                .select()
                .paths(PathSelectors.regex("/hello*")) // /hello配下を明示的に選択する
                .build()
                .apiInfo(apiInfo())
    }

    fun apiInfo(): ApiInfo {
        return ApiInfoBuilder()
                .title("API Document Demo")
                .description("This is an API document powered by swagger.")
                .version("0.0.0")
                .build()
    }
}

HelloController


import io.swagger.annotations.ApiOperation 추가@ApiOperation 어노테이션 추가
@ApiOperation(value = "Hello Endpoint", notes = "Hello, name!") // ドキュメントに説明文

다음이 된다

HelloController.kt
package com.example.swagger.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import io.swagger.annotations.ApiOperation

@RestController
@RequestMapping
class HelloController {
    @GetMapping("/hello")
    @ApiOperation(value = "Hello Endpoint", notes = "Hello, name!") // Swaggerに説明文
    fun hello(@RequestParam(value = "name", required = false, defaultValue = "World") name: String): String {
        return "Hello! $name!"
    }
}

설명문이 추가되어 깔끔한 표시가 되었습니다.



springfox가 해결할 수 없는 오류의 경우



springfox가 해결할 수 없다고 표시되면

방법 1




  • 창 오른쪽의 Gradle을 누르십시오

  • 를 누르십시오



  • 방법 2



    또는,



    를 클릭하여 설정 화면에서,
    Use auto-import 를 ON 으로 한다.

    좋은 웹페이지 즐겨찾기