This project uses Quarkus, the Supersonic Subatomic Java Framework.
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/
Promotion API has following dependencies:
- Quarkus
- MySQL
You can run your application in dev mode that enables live coding using:
./mvnw quarkus:dev
The application can be packaged using ./mvnw package
.
It produces the promotion-1.0-SNAPSHOT-runner.jar
file in the /target
directory.
Be aware that it’s not an über-jar as the dependencies are copied into the target/lib
directory.
The application is now runnable using java -jar target/promotion-1.0-SNAPSHOT-runner.jar
.
You can create a native executable using: ./mvnw package -Pnative
.
Or, if you don't have GraalVM installed, you can run the native executable build in a container using: ./mvnw package -Pnative -Dquarkus.native.container-build=true
.
You can then execute your native executable with: ./target/promotion-1.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/building-native-image.
You can create a native container using: docker/podman image build -t nordman-promotion:native .
.
curl http://HOST:PORT/promotions/
[
{
"id": 1,
"active": true,
"code": "prom_100",
"description": "Promotion from item 100",
"itemId": "100",
"percentOff": 20
},
{
"id": 2,
"active": true,
"code": "prom_200",
"description": "Promotion from item 200",
"itemId": "200",
"percentOff": 20
}
]
curl http://HOST:PORT/promotions/active
{
"100": {
"id": 1,
"active": true,
"code": "prom_100",
"description": "Promotion from item 100",
"itemId": "100",
"percentOff": 20
},
"200": {
"id": 2,
"active": true,
"code": "prom_200",
"description": "Promotion from item 200",
"itemId": "200",
"percentOff": 20
}
}
curl http://HOST:PORT/promotions/100
[
{
"id": 1,
"active": true,
"code": "prom_100",
"description": "Promotion from item 100",
"itemId": "100",
"percentOff": 20
}
]
curl -H "Content-Type: application/json" -X POST -d '{"active": true,"code": "prom_100","description": "Promotion from item 100","itemId": "100","percentOff": 20}' http://HOST:PORT/promotions
...
> POST /promotions HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.64.1
> Accept: */*
> Content-Type: application/json
> Content-Length: 109
>
* upload completely sent off: 109 out of 109 bytes
< HTTP/1.1 201 Created
< Content-Length: 0
< Location: http://127.0.0.1:8080/promotions/7
...