82

GitHub - cdimascio/kotlin-swagger-spring-functional-template: Kotlin Webflux fun...

 6 years ago
source link: https://github.com/cdimascio/kotlin-swagger-spring-functional-template
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

kotlin-swagger-spring-functional

A project template for Kotlin Spring WebFlux. The template features automatic request validation and interactive API documentation using an OpenApi 3.0 or Swagger 2.0 specification. The template provides 12-factor compliant environment based config and integrated in linting.

logo.png

What's included?

Request validation and interactive documentation are based on an OpenApi 3.0 or Swagger v2 API specification. The specification is located at main/resources/static/api.yaml.

Install

Clone this repo

Build

./gradlew build
./gradlew run
## show lint errors
./gradlew lintKotlin

## Attempt to auto fix lint errors
./gradlew formatKotlin
./gradlew test
./gradlew clean distZip

Output artifact located at build/distributions

or unpacked

./gradlew clean distZip unzip

Output artifact located at build/unpacked/dist

Run the standalone dist

Create an unpacked dist. See the Dist section above. Then run it

cp build/unpacked/dist $HOME/kotlin-swagger-spring-functional-1.0.0/bin/kotlin-swagger-spring-functional

Try It!

Run the app or run the standalone dist, then:

curl http://localhost:8080/api/users

Try the example endpoints (with swagger validation)

POST to /users with a valid request body

curl -X POST http://localhost:8080/api/users -H "Content-Type: application/json" -d '{ "firstname": "carmine", "lastname": "dimascio" }'    

result

{
  "firstname":"carmine",
  "lastname":"dimascio"
}

POST to /users with an invalid request body i.e. we leave off the required field lastname

curl -X POST http://localhost:8080/api/users -H "Content-Type: application/json" -d '{ "firstname": "carmine" }'

result

{
  "errors":[{
    "code":"bad_request",
    "message":"Object has missing required properties ([\"lastname\"])"}
]}

Try the Interactive API documentation

Navigate to http://localhost:8080

swagger1.png?raw=true

swagger2.png?raw=true

Contributors sparkles

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

License

Apache 2


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK