Python Flask API Tutorial: základný server, GET a POST endpointy
Rýchly návod, ako vytvoriť minimalistické REST API vo Flaske – od inštalácie, cez štruktúru projektu, spustenie servera, až po implementáciu GET/POST endpointov s JSON odpoveďami a jednoduchou validáciou.
Využijeme ľahký mikroframework Flask, ktorý umožňuje definovať routy pomocou dekorátorov, parsovať JSON zo žiadosti a vracať štruktúrované odpovede s HTTP kódmi. Pre lokálny vývoj použijeme venv a pre nasadenie tipy na gunicorn + reverzný proxy.
/health, /api/items).Vytvorenie virtuálneho prostredia pre python, nainštalovanie knižnice Flask a spustenie servera.
# 1) Projekt a venv
mkdir flask-api && cd flask-api
python3 -m venv .venv && source .venv/bin/activate
# 2) Inštalácia
pip install Flask
Súbor aplikácie obsahujúci server API rozhranie:
echo 'from flask import Flask, request, jsonify
app = Flask(__name__)
@app.get("/health")
def health(): return {"status":"ok"}
@app.get("/api/items")
def list_items(): return jsonify([{"id":1,"name":"foo"}])
@app.post("/api/items")
def create_item():
data = request.get_json(force=True, silent=True) or {}
if "name" not in data: return {"error":"name is required"}, 400
return {"id":2, "name":data["name"]}, 201
if __name__ == "__main__":
app.run(debug=True)' > app.py
# Spustenie servera
python app.py
flask-api/
├─ .venv/
├─ app.py
├─ requirements.txt
└─ README.md
(voliteľne rozšíriteľné o src/, blueprints/, tests/ atď.)
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.get("/health")
def health():
return {"status": "ok", "service": "flask-api"}, 200
@app.get("/api/items")
def list_items():
items = [
{"id": 1, "name": "foo"},
{"id": 2, "name": "bar"},
]
return jsonify(items), 200
@app.post("/api/items")
def create_item():
payload = request.get_json(silent=True) or {}
name = payload.get("name")
if not name or not isinstance(name, str):
return {"error": "Field 'name' is required (string)."}, 400
# v reále by tu bol zápis do DB; teraz vrátime mock
new_item = {"id": 3, "name": name}
return new_item, 201
@app.errorhandler(404)
def not_found(e):
return {"error": "Not found"}, 404
@app.errorhandler(500)
def server_error(e):
return {"error": "Internal server error"}, 500
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
# Healthcheck
curl -s http://localhost:5000/health | jq
# GET zoznamu
curl -s http://localhost:5000/api/items | jq
# POST vytvorenia
curl -s -X POST http://localhost:5000/api/items \
-H "Content-Type: application/json" \
-d '{"name":"sensor-a"}' | jq
# Chybný POST (validácia)
curl -s -X POST http://localhost:5000/api/items \
-H "Content-Type: application/json" \
-d '{}' | jq
pip install flask-cors
from flask_cors import CORS
CORS(app, resources={r"/api/*": {"origins": "*"}}) # pre dev; v prod zúž na konkrétne domény
import os
app.config["ENVIRONMENT"] = os.getenv("ENV", "development")
app.config["SECRET_KEY"] = os.getenv("SECRET_KEY", "dev-secret")
Spúšťaj s:
ENV=production SECRET_KEY="change-me" python app.py
pip freeze > requirements.txt
Minimálny, ale produkčne smerovateľný základ pre Flask API: jasná štruktúra, GET/POST, error handling, CORS, a návod na lokálny beh aj nasadenie.
Návod na vytvorenie jednoduchého REST API vo Flaske (GET/POST), s tipmi na validáciu, CORS a nasadenie.
Krok-za-krokom postup od inštalácie po spustenie a testovanie API, vrátane kódu.