smvit-air-sensor

🏠 Domov · ⬅️ Nahor

Knowledge Contribution

Názov

Python Flask API Tutorial: základný server, GET a POST endpointy

🎯 Čo rieši (účel, cieľ)

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.

🧩 Ako to rieši (princíp)

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.

🧪 Ako to použiť (aplikácia)


⚡ Rýchly návod (Top)

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

📜 Detailný článok

1. Štruktúra projektu

flask-api/
├─ .venv/
├─ app.py
├─ requirements.txt
└─ README.md

(voliteľne rozšíriteľné o src/, blueprints/, tests/ atď.)

2. Základný server (app.py)


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)

3. Testovanie cez curl

# 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

4. CORS (ak voláš z frontendu)

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

5. Konfigurácia a premenné prostredia

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

6. Requirements a zamrazenie verzií

pip freeze > requirements.txt

7. Nasadenie (stručne)

💡 Tipy a poznámky

✅ Hodnota / Zhrnutie

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.

📚 Knowledge Contribution

🔖 Názov a stručný popis

Návod na vytvorenie jednoduchého REST API vo Flaske (GET/POST), s tipmi na validáciu, CORS a nasadenie.

🗂️ Taxonómia KNIFE

📜 Obsah

Krok-za-krokom postup od inštalácie po spustenie a testovanie API, vrátane kódu.

🌍 Referencie


🏠 Domov · ⬅️ Nahor