Updated swagger ui and apis
This commit is contained in:
parent
614092fb7d
commit
49a3e35a06
@ -1,10 +1,11 @@
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
|
java
|
||||||
id("org.springframework.boot") version "2.3.3.RELEASE"
|
id("org.springframework.boot") version "2.3.3.RELEASE"
|
||||||
id("io.spring.dependency-management") version "1.0.10.RELEASE"
|
id("io.spring.dependency-management") version "1.0.10.RELEASE"
|
||||||
kotlin("jvm") version "1.3.72"
|
kotlin("jvm") version "1.4.0"
|
||||||
kotlin("plugin.spring") version "1.3.72"
|
kotlin("plugin.spring") version "1.4.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "com.example"
|
group = "com.example"
|
||||||
@ -18,6 +19,11 @@ repositories {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation("org.springframework.boot:spring-boot-starter-web")
|
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||||
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
|
||||||
|
implementation("io.springfox:springfox-swagger2:2.9.2")
|
||||||
|
implementation("io.springfox:springfox-swagger-ui:2.9.2")
|
||||||
|
|
||||||
|
developmentOnly("org.springframework.boot:spring-boot-devtools")
|
||||||
|
|
||||||
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
||||||
testImplementation("org.springframework.boot:spring-boot-starter-test") {
|
testImplementation("org.springframework.boot:spring-boot-starter-test") {
|
||||||
|
@ -4,6 +4,10 @@ import com.example.demo.domain.Currency
|
|||||||
import com.example.demo.domain.Money
|
import com.example.demo.domain.Money
|
||||||
import com.example.demo.domain.MoneyConfig
|
import com.example.demo.domain.MoneyConfig
|
||||||
import com.example.demo.domain.exchange
|
import com.example.demo.domain.exchange
|
||||||
|
import com.example.demo.exchange.FixerIOExchangeAdapter
|
||||||
|
import com.example.demo.exchange.LocalExchangeAdapter
|
||||||
|
import com.example.demo.exchange.MoneyExchange
|
||||||
|
import com.example.demo.exchange.YahooExchangeAdapter
|
||||||
import com.example.demo.rest.RestWebClient
|
import com.example.demo.rest.RestWebClient
|
||||||
import org.springframework.boot.CommandLineRunner
|
import org.springframework.boot.CommandLineRunner
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||||
@ -43,14 +47,24 @@ class DemoApplication : CommandLineRunner {
|
|||||||
//
|
//
|
||||||
// println(moneyUsd)
|
// println(moneyUsd)
|
||||||
|
|
||||||
val url = "http://data.fixer.io/api/latest?access_key=381f3bac3cb8beed200cc4e17c0f8bb4&symbols=USD,KHR,EUR"
|
// val url = "http://data.fixer.io/api/latest?access_key=381f3bac3cb8beed200cc4e17c0f8bb4&symbols=USD,KHR,EUR"
|
||||||
val result = RestWebClient.getRates(url)
|
// val result = RestWebClient.getRates(url)
|
||||||
// println(result)
|
// // println(result)
|
||||||
MoneyConfig.loadFrom(result)
|
// MoneyConfig.loadFrom(result)
|
||||||
|
//
|
||||||
|
// val moneyUsd = Money(10.0, currency = Currency.USD)
|
||||||
|
// val moneyResult = moneyUsd.exchange("KHR")
|
||||||
|
// println(moneyResult)
|
||||||
|
|
||||||
val moneyUsd = Money(10.0, currency = Currency.USD)
|
// val exchangeAdapter1 = LocalExchangeAdapter()
|
||||||
val moneyResult = moneyUsd.exchange("KHR")
|
// val exchangeAdapter2 = FixerIOExchangeAdapter()
|
||||||
println(moneyResult)
|
// val exchangeAdapter3 = YahooExchangeAdapter()
|
||||||
|
//
|
||||||
|
// val exchanger = MoneyExchange(exchangeAdapter3)
|
||||||
|
//
|
||||||
|
// val moneyUsd = Money(10.0)
|
||||||
|
// val result = exchanger.exchange(moneyUsd, "KHR")
|
||||||
|
// println(result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
22
src/main/kotlin/com/example/demo/config/SpringFoxConfig.kt
Normal file
22
src/main/kotlin/com/example/demo/config/SpringFoxConfig.kt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package com.example.demo.config
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean
|
||||||
|
import org.springframework.context.annotation.Configuration
|
||||||
|
import springfox.documentation.builders.PathSelectors
|
||||||
|
import springfox.documentation.builders.RequestHandlerSelectors
|
||||||
|
import springfox.documentation.spi.DocumentationType
|
||||||
|
import springfox.documentation.spring.web.plugins.Docket
|
||||||
|
import springfox.documentation.swagger2.annotations.EnableSwagger2
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableSwagger2
|
||||||
|
class SpringFoxConfig {
|
||||||
|
@Bean
|
||||||
|
fun api(): Docket? {
|
||||||
|
return Docket(DocumentationType.SWAGGER_2)
|
||||||
|
.select()
|
||||||
|
.apis(RequestHandlerSelectors.any())
|
||||||
|
.paths(PathSelectors.any())
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
}
|
17
src/main/kotlin/com/example/demo/config/WebConfig.kt
Normal file
17
src/main/kotlin/com/example/demo/config/WebConfig.kt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package com.example.demo.config
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Configuration
|
||||||
|
import org.springframework.web.servlet.config.annotation.EnableWebMvc
|
||||||
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
|
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebMvc
|
||||||
|
class WebConfig : WebMvcConfigurer {
|
||||||
|
override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
|
||||||
|
registry.addResourceHandler("swagger-ui.html")
|
||||||
|
.addResourceLocations("classpath:/META-INF/resources/")
|
||||||
|
registry.addResourceHandler("/webjars/**")
|
||||||
|
.addResourceLocations("classpath:/META-INF/resources/webjars/")
|
||||||
|
}
|
||||||
|
}
|
10
src/main/kotlin/com/example/demo/exchange/ExchangeAdapter.kt
Normal file
10
src/main/kotlin/com/example/demo/exchange/ExchangeAdapter.kt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package com.example.demo.exchange
|
||||||
|
|
||||||
|
interface ExchangeAdapter {
|
||||||
|
/**
|
||||||
|
* @param source String Source Currency
|
||||||
|
* @param sourceAmount String Source Amount
|
||||||
|
* @return targetAmount Double
|
||||||
|
*/
|
||||||
|
fun exchange(source: String, sourceAmount: Double, target: String): Double
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.example.demo.exchange
|
||||||
|
|
||||||
|
class FixerIOExchangeAdapter : ExchangeAdapter {
|
||||||
|
override fun exchange(source: String, sourceAmount: Double, target: String): Double {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.example.demo.exchange
|
||||||
|
|
||||||
|
class LocalExchangeAdapter : ExchangeAdapter {
|
||||||
|
override fun exchange(source: String, sourceAmount: Double, target: String): Double {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
}
|
14
src/main/kotlin/com/example/demo/exchange/MoneyExchange.kt
Normal file
14
src/main/kotlin/com/example/demo/exchange/MoneyExchange.kt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package com.example.demo.exchange
|
||||||
|
|
||||||
|
import com.example.demo.domain.Currency
|
||||||
|
import com.example.demo.domain.Money
|
||||||
|
import com.example.demo.domain.StdMoney
|
||||||
|
|
||||||
|
class MoneyExchange (
|
||||||
|
private val exchangeAdapter: ExchangeAdapter
|
||||||
|
) {
|
||||||
|
fun exchange(source: StdMoney, toCurrency: String): StdMoney {
|
||||||
|
val exchangeRate = exchangeAdapter.exchange(source.getMoneyCurrency(), source.getMoneyValue(), toCurrency)
|
||||||
|
return Money(value = exchangeRate, currency = Currency.create(toCurrency))
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.example.demo.exchange
|
||||||
|
|
||||||
|
class YahooExchangeAdapter : ExchangeAdapter {
|
||||||
|
override fun exchange(source: String, sourceAmount: Double, target: String): Double {
|
||||||
|
TODO("Not yet implemented")
|
||||||
|
}
|
||||||
|
}
|
39
src/main/kotlin/com/example/demo/rest/ApiController.kt
Normal file
39
src/main/kotlin/com/example/demo/rest/ApiController.kt
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
package com.example.demo.rest
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.DeleteMapping
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping
|
||||||
|
import org.springframework.web.bind.annotation.RestController
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/people")
|
||||||
|
class ApiController {
|
||||||
|
private val people = mutableListOf<Person>()
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
fun index(): List<Person> {
|
||||||
|
return people
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping
|
||||||
|
fun create(@RequestBody person: Person): Person {
|
||||||
|
people.add(person)
|
||||||
|
|
||||||
|
return person
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/{id}")
|
||||||
|
fun delete(@PathVariable id: Long): String {
|
||||||
|
val person = people.firstOrNull { it.id == id } ?: return "not found"
|
||||||
|
people.remove(person)
|
||||||
|
return "deleted"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data class Person(
|
||||||
|
var id: Long? = null,
|
||||||
|
var name: String? = null
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user