Python: REST API įgyvendinimas naudojant Flask

Ši dokumentacija yra REST API kūrimas vadovo dalis. Visą vadovą rasite čia: Kaip sukurti REST API naudojant Flask.

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti Python cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:

  • Įdiekite savo programą per kelias sekundes su paprastu git push.
  • Naudokite savo domeno vardą ir pasinaudokite automatinės HTTPS sertifikatų konfigūracijos privalumais, kad padidintumėte saugumą.
  • Mėgaukitės ramybe su automatinėmis atsarginėmis kopijomis, vieno paspaudimo atnaujinimais ir paprasta, skaidria bei prognozuojama kainodara.
  • Gaukite optimalią veikimo ir tvirtą saugumo lygį dėka privačios ir dedikuotos VM.

Taupykite laiką ir supaprastinkite savo gyvenimą: išbandyti Stackhero Python cloud hosting sprendimą užtrunka tik 5 minutes!

Dabar pasinerkime į kodą!

Sukurkite failą pavadinimu app.py ir įterpkite šį kodą:

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

# Įkelti aplinkos kintamuosius iš .env failo, kai nesame gamyboje
if os.environ.get('ENV') != 'production':
    load_dotenv()

# Sukurti Flask programą
app = Flask(__name__)

# Pavyzdžių duomenų rinkinys
tasks = [
    {
        'id': 1,
        'title': 'Pirkti maisto produktus',
        'description': 'Pienas, Sūris, Pica, Vaisiai',
        'done': False
    },
    {
        'id': 2,
        'title': 'Išmokti Python',
        'description': 'Išmokti Python programavimo pagrindus',
        'done': False
    }
]

# Maršrutas '/api/tasks' (GET) norint išvardyti visas užduotis
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

# Maršrutas '/api/tasks/<task_id>' (GET) norint gauti konkrečią užduotį pagal 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': 'Užduotis nerasta'}), 404
    return jsonify({'task': task[0]})

# Maršrutas '/api/tasks' (POST) norint sukurti naują užduotį
@app.route('/api/tasks', methods=['POST'])
def create_task():
    if not request.json or 'title' not in request.json:
        return jsonify({'error': 'Pavadinimas yra būtinas'}), 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

# Pradėti API serverį
if __name__ == '__main__':
    if os.environ.get('ENV') == 'production':
        app.run()
    else:
        app.run(host='0.0.0.0', port=8080, debug=True)

Norėdami paleisti serverį, vykdykite:

python app.py

Su host='0.0.0.0' parinktimi, galite taip pat pasiekti savo API naudodami naršyklę, kai naudojate Code-Hero. Tiesiog naršykite į http://<XXXXXX>.stackhero-network.com:8080/api/tasks, pakeisdami <XXXXXX> savo Code-Hero domenu.