home       inleiding       sysadmin       services       tools       bash       werk       nothing      

REST‑API achter Apache

in bash # pip install flask
in python: nano app.py

from flask import Flask, jsonify

app = Flask(__name__)

PRODUCTEN = [
    {"id": 1, "naam": "Laptop", "prijs": 899},
    {"id": 2, "naam": "Muis", "prijs": 25}
]

@app.get("/api/producten")
def lijst_producten():
    return jsonify(PRODUCTEN)

@app.get("/api/producten/<int:pid>")
def één_product(pid):
    for p in PRODUCTEN:
        if p["id"] == pid:
            return jsonify(p)
    return jsonify({"fout": "Niet gevonden"}), 404

if __name__ == "__main__":
    app.run(host="127.0.0.1", port=5000)

Apache als reverse proxy

in je virtuele host:

<VirtualHost *:80>
    ServerName api.example.com

    ProxyPreserveHost On
    ProxyPass /api/ http://127.0.0.1:5000/api/
    ProxyPassReverse /api/ http://127.0.0.1:5000/api/
</VirtualHost>

Modules nodig: mod_proxy, mod_proxy_http.
 
client die het zichtbaar maakt met curl in bash:

curl http://api.example.com/api/producten
curl http://api.example.com/api/producten/1

Of in je browser: http://api.example.com/api/producten