Stundas uzdevums: Uzbūvēt savu pirmo Flask web serveri ar vairākām maršrutēm un atgriezt JSON datus.
70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.
Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.
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/.
Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 12.2 Flask: Python kā web serveris; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
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)
main.py failā un palaid no termināļa.Pievieno šīs stundas paņēmienu kā nelielu, strādājošu projekta daļu.
apstrada_gajienu(), rezultats vai routes.py.Pārbaudi, vai algoritms darbojas paredzami ar dažādiem datiem.
Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
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)