Kotlin + Spring Boot + Swagger
11049 단어 swaggerspring-bootKotlin
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.ktsdependencies {
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.ktpackage 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
compile ("io.springfox:springfox-swagger2:2.9.2")
compile ("io.springfox:springfox-swagger-ui:2.9.2")
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")
}
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)
}
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
{
@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()
}
}
@ApiOperation(value = "Hello Endpoint", notes = "Hello, name!") // ドキュメントに説明文
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가 해결할 수 없다고 표시되면
방법 1
를 누르십시오
방법 2
또는,
를 클릭하여 설정 화면에서,
Use auto-import 를 ON 으로 한다.
Reference
이 문제에 관하여(Kotlin + Spring Boot + Swagger), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sugasaki/items/c19821bfe483d45b2415텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)