I've created this project in order to learn how to create a REST API using a 🎯 Clean Architecture approach using Kotlin. This is my first Kotlin project so don't trust too much in the solution. I'd appreciate you create an issue or send a PR if you see any improvement or posible bugs.
gradle run
This command starts the server, then you can access the API on your localhost.
curl -X POST \ http://localhost:8080/product \ -H 'Content-Type: application/json' \ -d '{ "name": "Favorite Jeans" }'
Server logs:
ProductCreated(productId=ProductId(value=95156b7e-6c69-4aae-abf5-57d1ae2d141f), date=2019-07-17T15:49:12.584+02:00[Europe/Madrid])
curl -X POST \ http://localhost:8080/cart \ -H 'Content-Type: application/json' \ -d '{ "userId": "1", "productId": "95156b7e-6c69-4aae-abf5-57d1ae2d141f" }'
Server logs:
CartCreatedEvent(cartId=CartId(value=685d34fd-e109-4be5-b018-3a1f2bbf1abf), date=2019-07-17T15:52:17.973+02:00[Europe/Madrid]) ProductAddedToCart(cartId=CartId(value=685d34fd-e109-4be5-b018-3a1f2bbf1abf), date=2019-07-17T15:52:17.977+02:00[Europe/Madrid])
curl 'http://localhost:8080/cart?userId=1' \ -H 'Content-Type: application/json' {"id":"685d34fd-e109-4be5-b018-3a1f2bbf1abf","products":[{"productId":"95156b7e-6c69-4aae-abf5-57d1ae2d141f","productName":"Favorite Jeans","quantity":1}]}
- Automated tests
- Dependency Injection framework?
- Autorization / Authentication
- Check coroutines and asynchrony
- Value objects validations