From 34e468577b6ab4a13347042cc772fab399f35fab Mon Sep 17 00:00:00 2001 From: KubMakCZ Date: Mon, 20 Apr 2026 15:45:59 +0200 Subject: [PATCH] new flask --- 29_flask_calculator/main.py | 83 +++++++++++++++++++++++++++++++++++++ 30_api_heroes/main.py | 65 +++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 29_flask_calculator/main.py create mode 100644 30_api_heroes/main.py diff --git a/29_flask_calculator/main.py b/29_flask_calculator/main.py new file mode 100644 index 0000000..6d28b2a --- /dev/null +++ b/29_flask_calculator/main.py @@ -0,0 +1,83 @@ +# python -m venv .venv +# .venv\scripts\activate +# pip install flask + +from flask import Flask, jsonify + +app = Flask(__name__) + +@app.route("/") +def index(): + return """ + + """ + +@app.route("/secti//") +def add(a,b): + vysledek = a+b + return jsonify({ + "operace":"soucet", + "vstup":{"a":a,"b":b}, + "vysledek":vysledek + }) + +@app.route("/odecti//") +def substrack(a,b): + vysledek = a-b + return jsonify({ + "operace":"rozdíl", + "vstup":{"a":a,"b":b}, + "vysledek":vysledek + }) + +@app.route("/vynasob//") +def multiply(a,b): + vysledek = a*b + return jsonify({ + "operace":"násobení", + "vstup":{"a":a,"b":b}, + "vysledek":vysledek + }) + +@app.route("/vydel//") +def divide(a,b): + if b == 0: + return jsonify({ + "operace":"rozdil", + "vstup":{"a":a,"b":b}, + "chyba": "Dělení nulou není povoleno!" + }), 400 #400 Bad Request + vysledek = a/b + return jsonify({ + "operace":"rozdil", + "vstup":{"a":a,"b":b}, + "vysledek":vysledek + }) + + +@app.route("/mocnina//") +def power(zaklad,exponent): + vysledek = zaklad ** exponent + return jsonify({ + "operace":"mocnina", + "zaklad": zaklad, + "exponent":exponent, + "vysledek":vysledek + }) + + + +@app.route("/pozdrav/") +def pozdrav(jmeno): + return f"Ahoj {jmeno}" + +if __name__ == "__main__": + print("Server běží na http://localhost:80") + app.run(host="0.0.0.0", port=80, debug=True) \ No newline at end of file diff --git a/30_api_heroes/main.py b/30_api_heroes/main.py new file mode 100644 index 0000000..c869a54 --- /dev/null +++ b/30_api_heroes/main.py @@ -0,0 +1,65 @@ +from flask import Flask, jsonify +import random + +app = Flask(__name__) + +# AltGR + F|G = [|] +hrdinove = [ + #{"jmeno":"","rasa":"","hp":100,"level":10}, + {"jmeno":"Aragorn","rasa":"clovek","hp":100,"level":20}, + {"jmeno":"Legolas","rasa":"elf","hp":80,"level":18}, + {"jmeno":"Gimli","rasa":"trpaslik","hp":130,"level":21}, + {"jmeno":"Frodo","rasa":"hobbit","hp":40,"level":5}, + {"jmeno":"Gandalf","rasa":"clovek","hp":150,"level":50}, + {"jmeno":"Sauron","rasa":"demon","hp":500,"level":100}, +] + +@app.route("/") +def index(): + """Hlavní stránka s rozcestníkem (HTML pro snadné klikání)""" + return """ +

RPG Heroes API Server

+
    +
  • Všichni hrdninové: /api/heroes
  • +
  • Nahodný hrdina: /api/heores/random
  • +
  • Konkrétní hrdina: /api/heroes/ČÍSLO
  • +
  • filtrovat podle rasy (např.elf): /api/heroes/filter/elf
  • +
+ """ + +@app.route("/api/heroes") +def get_all_heroes(): + """Vrátí celý seznam hrdinů jako JSON""" + return jsonify(hrdinove) + +@app.route("/api/heroes/random") +def get_random_hero(): + """Vrátí náhodného hrdinu jako JSON""" + nahodny = random.choice(hrdinove) + return jsonify(nahodny) + +@app.route("/api/heroes/") +def get_hero_by_id(hero_id): + """Vrátí hrdinu podle jeho indexu v seznamu v poli(array)""" + if 0 <= hero_id < len(hrdinove): + return jsonify(hrdinove[hero_id]) + else: + return jsonify({"chyba":"Hrdina s tímto ID neexistuje"}), 404 + +@app.route("/api/heroes/filter/") +def filter_heores_by_race(rasa): + """Vrátí hrdiny, kteří odpovídají zadané rase""" + vysledek = [] + for hrdina in hrdinove: + if hrdina["rasa"].lower() == rasa.lower(): + vysledek.append(hrdina) + if not vysledek: + return jsonify({"chyba":f"Žádný hrdina rasy '{rasa}'!"}) + return jsonify(vysledek) + + +if __name__ == "__main__": + print("--- HERO API SERVER NASTARTOVÁN ---") + print("Server běží na http://localhost:80") + print("Vypnout server -> Ctrl + C") + app.run(host="0.0.0.0",port=80,debug=True) \ No newline at end of file