Tavs šīs stundas izaicinājums: Uzbūvēt savu pirmo Flask web serveri ar vairākām maršrutēm un atgriezt JSON datus.
Flask ir mikro-ietvars Python — tikai 100 KB, bet pietiekams reāliem projektiem. Instalācija: pip install flask.
from flask import Flask, jsonify, request
app = Flask(__name__)
# Vienkārša maršruta
@app.route("/")
def home():
return "<h1>Sveiks!</h1>"
# JSON atbilde
@app.route("/api/speletaji")
def saraksts():
return jsonify([
{"vards": "Anna", "punkti": 120},
{"vards": "Jānis", "punkti": 95}
])
# Maršruta ar parametru
@app.route("/api/speletajs/<int:id>")
def viens(id):
return jsonify({"id": id, "vards": "Anna"})
# POST pieprasījums
@app.route("/api/saglabat", methods=["POST"])
def saglabat():
dati = request.json
return jsonify({"status": "ok", "saņēmu": dati}), 201
if __name__ == "__main__":
app.run(debug=True, port=5000)
Palaiž ar python app.py → atver http://localhost:5000/.
Izveido un palaiž pamatu.
pip install flask.app.py ar minimālo "Hello World" maršrutu.python app.py.http://localhost:5000./par, kas atgriež HTML par tevi.Pievieno datu maršrutas.
SPELETAJI = [{"id": 1, "vards": "Anna", "punkti": 120}, ...] globāli.GET /api/speletaji: atgriež visus.GET /api/speletaji/<int:id>: atgriež vienu pēc ID; 404, ja nav atrasts.curl http://localhost:5000/api/speletaji.Pieņem datus no pārlūka.
POST /api/speletaji: lasa request.json, pievieno sarakstam, atgriež jauno ar 201 status.vards, atgriež 400 ar kļūdas paziņojumu.curl: curl -X POST -H "Content-Type: application/json" -d '{"vards":"Eva","punkti":150}' http://localhost:5000/api/speletaji.DELETE /api/speletaji/<int:id> maršrutu.routes.py un main.py.Renderē HTML lapas no Python.
templates/ un tajā index.html ar {{ vards }} placeholder.return render_template("index.html", vards="Anna").{% for s in saraksts %}...{% endfor %} ciklu.jsonify(): Bez tā Flask atgriež dictionary kā string, ne JSON.OSError: Address already in use — nogalini iepriekšējo procesu vai mainī portu.request.json ir None, ja klients nesūta Content-Type: application/json.from flask import Flask, jsonify, request
app = Flask(__name__)
SPELETAJI = [{"id": 1, "vards": "Anna", "punkti": 120}]
@app.route("/api/speletaji")
def visi():
return jsonify(SPELETAJI)
@app.route("/api/speletaji", methods=["POST"])
def pievienot():
d = request.json
if not d or "vards" not in d:
return jsonify({"kluda": "Trūkst vārds"}), 400
jauns = {"id": len(SPELETAJI) + 1, "vards": d["vards"], "punkti": d.get("punkti", 0)}
SPELETAJI.append(jauns)
return jsonify(jauns), 201
if __name__ == "__main__":
app.run(debug=True)