Files
compiti-api-python/app.py

80 lines
2.2 KiB
Python

from flask import Flask, jsonify, request, render_template, redirect
compiti = [
{"id": 1, "descrizione": "Compito matematica"},
{"id": 2, "descrizione": "Consegna TPSIT progetto API REST"},
{"id": 3, "descrizione": "Compito di sistemi"},
{"id": 4, "descrizione": "Compito di italiano"}
]
id_counter = 5
app = Flask(__name__)
@app.route("/", methods=["GET"])
def home():
html = "<h1>Home page API REST Compiti</h1><h2>ciao, 3cx merda</h2>"
html += "<a href=\"/doc\">Documentazione</a>"
return html, 200
@app.route("/doc", methods=["GET"])
def get_doc():
return render_template("doc.html"), 200
@app.route("/compiti", methods=["GET"])
def get_compiti():
return jsonify(compiti), 200
@app.route("/compiti/<int:id>", methods=["GET"])
def get_compito_by_id(id):
for ciscomerda in compiti:
if ciscomerda["id"] == id:
return jsonify(ciscomerda), 200
return jsonify([]), 404
@app.route("/compiti", methods=["POST"])
def create_compito():
global id_counter
j = request.get_json()
j["id"] = id_counter
id_counter += 1
compiti.append(j)
return jsonify(j), 201
@app.route("/compiti/<int:id>", methods=["DELETE"])
def delete_compito(id):
for ciscomerda in compiti:
if ciscomerda["id"] == id:
compiti.remove(ciscomerda)
return jsonify(ciscomerda), 200
return jsonify([]), 404
@app.route("/ui")
def web_ui():
# Tabella compiti
html = "<table border>"
for ciscomerda in compiti:
html += "<tr>"
html += f"<td>{ciscomerda["descrizione"]}</td>"
html += "</tr>"
html += "</table>"
html += "<form action=\"/form_add\">"
html += "<input type=\"text\" name=\"descrizione\" placeholder=\"Descrizione compito\">"
html += "<input type=\"submit\" value=\"Aggiungi compito\">"
html += "</form>"
return html, 200
@app.route("/form_add")
def form_add():
if not request.args.get("descrizione"):
return "Errore: descrizione mancante", 400
else:
global id_counter
d = request.args.get("descrizione")
compiti.append({"id": id_counter, "descrizione": d})
id_counter += 1
return redirect("/ui")
app.run("0.0.0.0")