Skip to content

Commit 840626a

Browse files
committed
Beheer: voeg express example toe
Deze is geschreven in JavaScript en gebruikt een open source library voor het genereren van de openAPI specificatie. Het Bash scriptje is wat complex geworden, omdat in dit geval de server in hetzelfde scriptje draait als de rest van de logica. Bij Quarkus was dat in 1 keer te doen, maar hier kostte dat wat meer moeite. Bij nieuwe examples moeten we hier mogelijk een generieker scriptje van maken, maar voor nu kunnen we het hier laten staan.
1 parent 136bf71 commit 840626a

File tree

8 files changed

+1587
-4
lines changed

8 files changed

+1587
-4
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ jobs:
3838
runs-on: ubuntu-22.04
3939
strategy:
4040
matrix:
41-
# Minimum supported and maximum available.
42-
example: [ quarkus ]
41+
example: [ express, quarkus ]
4342
steps:
4443
- uses: actions/checkout@v4
4544
- uses: actions/setup-node@v4

examples/express/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules/
2+
generated/

examples/express/README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Express example
2+
3+
Dit project gebruikt Express: <https://expressjs.com/>, een JavaScript framework waarmee onder andere API's kunnen worden gebruikt.
4+
5+
Om het project te bouwen en een `openapi.json` te genereren, run het volgende:
6+
7+
```shell script
8+
npm ci
9+
node src/server.js
10+
# In een ander terminal tab, omdat de server nog draait
11+
curl --silent http://localhost:8080/openapi.json > generated/openapi.json
12+
```
13+
14+
Dit download een `generated/openapi.json` op basis van de definities in [`src/server.js`](src/server.js).
15+
Daar kun je de verscheidene middleware calls bekijken die gebruikt worden om API's te documenteren.
16+
17+
Met deze middleware calls voldoet het example aan alle regels van de API Design Rules.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/bin/sh
2+
CURRENT_DIRECTORY=$(dirname "$0")
3+
4+
cd $CURRENT_DIRECTORY
5+
6+
# Installeer benodigde dependencies
7+
npm ci
8+
9+
# Start the server as a background process
10+
node src/server.js &
11+
SERVER_PID=$!
12+
13+
mkdir -p generated/
14+
rm generated/openapi.json 2> /dev/null
15+
16+
# Haal de gegenereerde openapi.json op. Omdat de server nog
17+
# moet opstarten slapen we 100 ms tussen elke call, totdat we
18+
# een succesvolle response terug krijgen.
19+
CURL_EXIT_CODE=1
20+
while [ $CURL_EXIT_CODE -ne 0 ]
21+
do
22+
sleep 0.1
23+
# Check if the server is running. If it has crashed, we should
24+
# stop checking and exit the script
25+
ps --pid $SERVER_PID 1> /dev/null
26+
PROCESS_EXISTS=$(echo $?)
27+
if [ $PROCESS_EXISTS -ne 0 ]
28+
then
29+
echo "Server has crashed. See above terminal output for more information"
30+
exit 1
31+
fi
32+
curl --silent http://localhost:8080/openapi.json > generated/openapi.json
33+
CURL_EXIT_CODE=$(echo $?)
34+
done
35+
36+
# Silently kill the server background process
37+
kill $SERVER_PID
38+
wait $SERVER_PID 2>/dev/null
39+
40+
../run-spectral-linter.sh $(realpath generated/openapi.json)

0 commit comments

Comments
 (0)