You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
Moritz Marquardt 8fbee44cd9 Update link to Swagger docs 5 months ago
.mvn/wrapper Add skeleton provided by Spring Initializr 5 months ago
src Rename everything to eu.llit.bananenrepublik 5 months ago
.gitignore Dockerfile, Client & improved README 5 months ago
Dockerfile Rename everything to eu.llit.bananenrepublik 5 months ago
README.md Update link to Swagger docs 5 months ago
client.js Dockerfile, Client & improved README 5 months ago
mvnw Add skeleton provided by Spring Initializr 5 months ago
mvnw.cmd Add skeleton provided by Spring Initializr 5 months ago
pom.xml Rename everything to eu.llit.bananenrepublik 5 months ago
swagger.yaml Rename everything to eu.llit.bananenrepublik 5 months ago

README.md

Bananenrepublik

Ein API-Webshop für Bananen.

Übung 2b für Service Engineering
Till Riechard & Moritz Marquardt

Swagger-Dokumentation

Entwicklung & Ausführung

Alles was man braucht ist das OpenJDK 8 oder eine kompatible Version des JDK. Für ein Deployment wird zusätzlich Docker benötigt.
Als IDE verwenden wir VSCodium mit der redhat.java-Erweiterung für die Java-Entwicklung, sowie pivotal.vscode-spring-boot für bessere Syntax-Vervollständigung und arjun.swagger-viewer zur einfacheren Erstellung der API-Dokumentation. Unser Versionskontrollsystem ist Git.

Das Repository kann mit git clone https://codeberg.org/momar/ovgu-soa.git && cd ovgu-soa heruntergeladen werden; mit ./mvnw install können nun alle benötigten Dependencies installiert werden.

Mit ./mvnw spring-boot:run kann die Anwendung jetzt im Entwicklungsmodus gestartet werden, oder mit ./mvnw package als JAR-Datei exportiert werden.

Deployment

Mittels docker build -t api2b . wird ein Docker-Image mit dem Namen “api2b” gebaut, welches nun mit docker run --rm -p 8080:8080 -v "$PWD:/data" api2b ausgeführt werden kann - die Datenbank wird dabei als test.db abgelegt.

Client

Die Datei client.js beinhaltet einen JavaScript-Client für die API, und kann beispielsweise mit node.js ausgeführt werden - dafür wird node-fetch benötigt (kann mit npm install node-fetch installiert werden), danach kann der Client als REPL über node -i --experimental-repl-await -r ./client.js ausgeführt werden.

Beispiel

> await banana.info()
{ title: 'Banane',
  description: 'Banane',
  price: 500,
  averageRating: 0,
  reviews: [] }
> await banana.review(0.9, "Tolle Banane!")
{ error: null }
> await banana.review(0.7, "Hab schon bessere Bananen gegessen...")
{ error: null }
> (await banana.info()).reviews
[ { rating: 0.9, content: 'Tolle Banane!' },
  { rating: 0.7,
    content: 'Hab schon bessere Bananen gegessen...' } ]
> await banana.order(5)
Thrown:
Error: Ihre Kreditkarte ist nicht für Bananen freigeschaltet.
    at Object.handleError (/home/momar/Uni/Service Engineering/api2b/client.js:5:130)
    at process._tickCallback (internal/process/next_tick.js:68:7)
> await banana.order(10, "Otto-von-Guericke-Universität Magdeburg\nUniversitätsplatz 2\n39106 Magdeburg", {number:"4242424242424242", name:"Otto von Guericke", validity:202307, cvc:456})
{ id: 1, totalPrice: 5000 }
> await banana.status(1)
{ count: 10,
  pricePerBanana: 500,
  priceTotal: 5000,
  status: 'awaiting-payment' }
> (await banana.status(1)).status
'growing'
> (await banana.status(1)).status
'packing'
> (await banana.status(1)).status
'shipping'
> (await banana.status(1)).status
'eaten'