This project is a sample service using ktor (with Netty) and
Exposed ORM. Kodein is leveraged for
dependency injection. The ultimate goal is to incorporate a similar sample service into
cautious-engine to test the performance of various frameworks.
This project was initialized with IntelliJ's Ktor plugin.
docker-compose up
./gradlew run
To create an Offering, you must supply name
, tasting_notes
, description
, url
, and roaster_name
.
curl -X POST 'http://localhost:8080/api/v1/offerings' -H 'Content-Type: application/json' -d '{ 130 ↵
"name": "Ethiopia Kochere & Yirgacheffe Jabanto",
"tasting_notes": "Blueberry, Chocolate, Honey",
"description": "The Jabanto group formed in 2017, after changes in the Ethiopian coffee policy permitted smallholder farmers to be able to directly export and sell their coffees. The group has worked hard to build an enterprising business from scratch and their commitment to careful harvesting and processing each year results in some of our favorite offerings. This year’s production of Jabanto Natural Sundried tastes like blueberry, chocolate, and honey.",
"url": "https://counterculturecoffee.com/shop/coffee/jabanto-natural-sundried",
"roaster_name": "Counter Culture Coffee"
}' | jq
curl 'http://localhost:8080/api/v1/offerings' | jq
curl 'http://localhost:8080/api/v1/offerings/{id}' | jq
Only description
is updatable.
curl -X PUT 'http://localhost:8080/api/v1/offerings/{id}' -H 'Content-Type: application/json' -d '{ "description":"Updated Description" }' | jq
curl -X DELETE 'http://localhost:8080/api/v1/offerings/{id}' | jq
The following were helpful in putting this together.
Tutorial: Simple Kotlin REST API with Ktor, Exposed and Kodein