Python: Implementacja REST API za pomocą Flask

Ta dokumentacja jest częścią przewodnika Tworzenie REST API. Pełny przewodnik znajdziesz tutaj: Jak stworzyć REST API za pomocą Flask.

👋 Witamy w dokumentacji Stackhero!

Stackhero oferuje gotowe do użycia rozwiązanie Python cloud, które zapewnia wiele korzyści, w tym:

  • Wdrażaj swoją aplikację w kilka sekund za pomocą prostego git push.
  • Używaj własnej nazwy domeny i korzystaj z automatycznej konfiguracji certyfikatów HTTPS dla zwiększonego bezpieczeństwa.
  • Ciesz się spokojem dzięki automatycznym kopiom zapasowym, aktualizacjom jednym kliknięciem oraz prostemu, przejrzystemu i przewidywalnemu cennikowi.
  • Uzyskaj optymalną wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.

Oszczędzaj czas i upraszczaj sobie życie: wypróbowanie rozwiązania Python cloud hosting Stackhero zajmuje tylko 5 minut!

Przejdźmy teraz do kodu!

Utwórz plik o nazwie app.py i wstaw następujący kod:

import os
from dotenv import load_dotenv
from flask import Flask, jsonify, request

# Załaduj zmienne środowiskowe z pliku .env, gdy nie jesteśmy w produkcji
if os.environ.get('ENV') != 'production':
    load_dotenv()

# Utwórz aplikację Flask
app = Flask(__name__)

# Przykładowy zestaw danych
tasks = [
    {
        'id': 1,
        'title': 'Kup zakupy',
        'description': 'Mleko, Ser, Pizza, Owoce',
        'done': False
    },
    {
        'id': 2,
        'title': 'Naucz się Pythona',
        'description': 'Naucz się podstaw programowania w Pythonie',
        'done': False
    }
]

# Trasa '/api/tasks' (GET) do listowania wszystkich zadań
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

# Trasa '/api/tasks/<task_id>' (GET) do pobierania konkretnego zadania po jego ID
@app.route('/api/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id):
    task = [task for task in tasks if task['id'] == task_id]
    if len(task) == 0:
        return jsonify({'error': 'Zadanie nie znalezione'}), 404
    return jsonify({'task': task[0]})

# Trasa '/api/tasks' (POST) do tworzenia nowego zadania
@app.route('/api/tasks', methods=['POST'])
def create_task():
    if not request.json or 'title' not in request.json:
        return jsonify({'error': 'Tytuł jest wymagany'}), 400
    task = {
        'id': tasks[-1]['id'] + 1,
        'title': request.json['title'],
        'description': request.json.get('description', ""),
        'done': False
    }
    tasks.append(task)
    return jsonify({'task': task}), 201

# Uruchom serwer API
if __name__ == '__main__':
    if os.environ.get('ENV') == 'production':
        app.run()
    else:
        app.run(host='0.0.0.0', port=8080, debug=True)

Aby uruchomić serwer, wykonaj:

python app.py

Z opcją host='0.0.0.0' możesz również uzyskać dostęp do swojego API za pomocą przeglądarki, korzystając z Code-Hero. Wystarczy przejść do http://<XXXXXX>.stackhero-network.com:8080/api/tasks, zastępując <XXXXXX> swoją domeną Code-Hero.