Python: REST API įgyvendinimas su Flask

Ši dokumentacija yra REST API kūrimas vadovo dalis. Visą vadovą rasite čia: Žingsnis po žingsnio vadovas, kaip sukurti REST API naudojant Flask su Python.

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti Python cloud sprendimą, sukurtą tam, kad jūsų diegimo procesas būtų kuo paprastesnis:

  • Diekite savo aplikaciją į gamybinę aplinką per kelias sekundes su paprastu git push.
  • Naudokite savo pasirinktą domeno vardą, su automatiniu HTTPS sertifikato konfigūravimu – saugūs ryšiai bus užtikrinti automatiškai.
  • Pasikliaukite automatinėmis atsarginėmis kopijomis, atnaujinimais vienu paspaudimu ir prognozuojama kainodara, kad galėtumėte susitelkti į savo kodą, o ne infrastruktūros valdymą.
  • Naudokitės aukštu našumu ir saugumu privačioje, dedikuotoje infrastruktūroje. Jūsų aplinka yra izoliuota ir apsaugota.

Taupykite laiką ir supaprastinkite savo darbo eigą: jūsų kodas gali veikti Stackhero Python cloud hosting platformoje vos per 5 minutes.

Dabar galite rašyti savo API kodą.

Sukurkite failą app.py ir įdėkite šį kodą:

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

# Įkelti aplinkos kintamuosius iš .env ne gamybinėje aplinkoje
if os.environ.get('ENV') != 'production':
    load_dotenv()

app = Flask(__name__)

# Pavyzdiniai užduočių duomenys
tasks = [
    {
        'id': 1,
        'title': 'Buy groceries',
        'description': 'Milk, Cheese, Pizza, Fruits',
        'done': False
    },
    {
        'id': 2,
        'title': 'Learn Python',
        'description': 'Learn Python programming basics',
        'done': False
    }
]

@app.route('/api/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

@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 not task:
        return jsonify({'error': 'Task not found'}), 404
    return jsonify({'task': task[0]})

@app.route('/api/tasks', methods=['POST'])
def create_task():
    if not request.json or 'title' not in request.json:
        return jsonify({'error': 'Title is required'}), 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

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

Serverį galite paleisti su:

python app.py

Naudojant host='0.0.0.0', jūsų API bus pasiekiama per naršyklę naudojant Code-Hero. Apsilankykite http://<XXXXXX>.stackhero-network.com:8080/api/tasks, kur <XXXXXX> pakeiskite savo Code-Hero domenu.