You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.1 KiB
68 lines
2.1 KiB
from flask import Flask, jsonify
|
|
import random
|
|
|
|
app = Flask(__name__)
|
|
|
|
# AltGR + F|G = [|]
|
|
# AltGR + B|N = {|}
|
|
hrdinove = [
|
|
#{"jmeno":"","rasa":"","hp":100,"level":20}
|
|
{"jmeno":"Aragorn","rasa":"clovek","hp":100,"level":20},
|
|
{"jmeno":"Legolas","rasa":"elf","hp":80,"level":18},
|
|
{"jmeno":"Gimli","rasa":"trpaslik","hp":120,"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 rozcesníkem"""
|
|
# AltGR + ,|. = <|>
|
|
return """
|
|
<h1>RPG Heroes API Server </h1>
|
|
<ul>
|
|
<li>Všichni hrdinové: /api/heroes</li>
|
|
<li>Náhodný hrdina: /api/heroes/random</li>
|
|
<li>Konkretní hrdnina: /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 dle jeho indexu v seznamu 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_heroes_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ý hrnina rasy '{rasa}'"})
|
|
return jsonify(vysledek)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("--- HERO SERVER NASTARTOVÁN ---")
|
|
print("Server běží na http://localhost:8080")
|
|
print("Vypnout server -> CTRL + C")
|
|
app.run(host="0.0.0.0",port=8080,debug=True)
|