2 changed files with 148 additions and 0 deletions
@ -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 """ |
|||
<ul> |
|||
<li>/secti/A/B</li> |
|||
<li>/odecti/A/B</li> |
|||
<li>/vynasob/A/B</li> |
|||
<li>/vydel/A/B</li> |
|||
<li>/mocnina/základ/exponent</li> |
|||
<li>/pozdrav/JMÉNO</li> |
|||
</ul> |
|||
""" |
|||
|
|||
@app.route("/secti/<int:a>/<int:b>") |
|||
def add(a,b): |
|||
vysledek = a+b |
|||
return jsonify({ |
|||
"operace":"soucet", |
|||
"vstup":{"a":a,"b":b}, |
|||
"vysledek":vysledek |
|||
}) |
|||
|
|||
@app.route("/odecti/<int:a>/<int:b>") |
|||
def substrack(a,b): |
|||
vysledek = a-b |
|||
return jsonify({ |
|||
"operace":"rozdíl", |
|||
"vstup":{"a":a,"b":b}, |
|||
"vysledek":vysledek |
|||
}) |
|||
|
|||
@app.route("/vynasob/<int:a>/<int:b>") |
|||
def multiply(a,b): |
|||
vysledek = a*b |
|||
return jsonify({ |
|||
"operace":"násobení", |
|||
"vstup":{"a":a,"b":b}, |
|||
"vysledek":vysledek |
|||
}) |
|||
|
|||
@app.route("/vydel/<int:a>/<int:b>") |
|||
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/<int:zaklad>/<int:exponent>") |
|||
def power(zaklad,exponent): |
|||
vysledek = zaklad ** exponent |
|||
return jsonify({ |
|||
"operace":"mocnina", |
|||
"zaklad": zaklad, |
|||
"exponent":exponent, |
|||
"vysledek":vysledek |
|||
}) |
|||
|
|||
|
|||
|
|||
@app.route("/pozdrav/<string:jmeno>") |
|||
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) |
|||
@ -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 """ |
|||
<h1>RPG Heroes API Server</h1> |
|||
<ul> |
|||
<li>Všichni hrdninové: /api/heroes</li> |
|||
<li>Nahodný hrdina: /api/heores/random</li> |
|||
<li>Konkrétní hrdina: /api/heroes/ČÍSLO</li> |
|||
<li>filtrovat podle rasy (např.elf): /api/heroes/filter/elf</li> |
|||
</ul> |
|||
""" |
|||
|
|||
@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/<int:hero_id>") |
|||
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/<string:rasa>") |
|||
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) |
|||
Loading…
Reference in new issue