Erstellen einer REST-API in Flask
Jetzt erstellen wir eine REST-API in Flask, indem wir die SQLite-Datenbank example.db
verwenden, die wir zuvor erstellt haben.
Füge in der Datei app.py
den folgenden Code hinzu, um die erforderlichen Module zu importieren:
from flask import Flask, jsonify, request
import sqlite3
Füge den folgenden Code hinzu, um die Flask-Anwendung zu erstellen:
## Create the Flask application
app = Flask(__name__)
Jetzt definieren wir die Endpunkte für unsere REST-API:
Endpunkt zum Abrufen aller Benutzer
## Endpoint to retrieve all users
@app.route('/users', methods=['GET'])
def get_users():
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to retrieve all users
cursor.execute('SELECT * FROM users')
users = cursor.fetchall()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Return the users as JSON
return jsonify(users)
In diesem Code verbinden wir uns zunächst mit der SQLite-Datenbank mithilfe der Methode connect()
. Dann erstellen wir ein Cursor-Objekt, um SQL-Anweisungen auszuführen, indem wir die Methode cursor()
verwenden. Anschließend führen wir die SQL-Abfrage aus, um alle Benutzer aus der Tabelle "users" abzurufen, indem wir die Methode execute()
verwenden. Schließlich schließen wir das Cursor-Objekt und die Datenbankverbindung mithilfe der Methode close()
und geben die Benutzer als JSON zurück, indem wir die Methode jsonify()
verwenden.
Endpunkt zum Abrufen eines bestimmten Benutzers anhand der ID
## Endpoint to retrieve a specific user by ID
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to retrieve the user by ID
cursor.execute('SELECT * FROM users WHERE id =?', (user_id,))
user = cursor.fetchone()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Check if the user exists
if user:
return jsonify(user)
else:
return jsonify({'message': 'User not found'}), 404
Dieser Endpunkt ähnelt dem vorherigen, mit dem Unterschied, dass er einen bestimmten Benutzer anhand der ID anstatt aller Benutzer abruft. Wir verwenden die Methode fetchone()
, um einen einzelnen Benutzer aus der Tabelle "users" abzurufen.
Endpunkt zum Erstellen eines neuen Benutzers
## Endpoint to create a new user
@app.route('/users', methods=['POST'])
def create_user():
## Get the user data from the request body
data = request.get_json()
name = data['name']
email = data['email']
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to insert a new user
cursor.execute('INSERT INTO users (name, email) VALUES (?,?)', (name, email))
conn.commit()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Return a success message
return jsonify({'message': 'User created successfully'})
Dieser Endpunkt wird verwendet, um einen neuen Benutzer in die Tabelle "users" einzufügen. Wir verwenden die Methode get_json()
, um die Benutzerdaten aus dem Anfragekörper zu erhalten. Dann verwenden wir die Methode execute()
, um den neuen Benutzer in die Tabelle "users" einzufügen.
Endpunkt zum Aktualisieren eines bestehenden Benutzers
## Endpoint to update an existing user
@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
## Get the updated user data from the request body
data = request.get_json()
name = data['name']
email = data['email']
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to update the user
cursor.execute('UPDATE users SET name =?, email =? WHERE id =?', (name, email, user_id))
conn.commit()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Return a success message
return jsonify({'message': 'User updated successfully'})
Dieser Endpunkt wird verwendet, um einen bestehenden Benutzer in der Tabelle "users" zu aktualisieren. Wir verwenden die Methode get_json()
, um die aktualisierten Benutzerdaten aus dem Anfragekörper zu erhalten. Dann verwenden wir die Methode execute()
, um den Benutzer in der Tabelle "users" zu aktualisieren.
Endpunkt zum Löschen eines Benutzers
## Endpoint to delete a user
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
## Connect to the database
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
## Execute the SQL query to delete the user
cursor.execute('DELETE FROM users WHERE id =?', (user_id,))
conn.commit()
## Close the cursor and the database connection
cursor.close()
conn.close()
## Return a success message
return jsonify({'message': 'User deleted successfully'})
Dieser Endpunkt wird verwendet, um einen Benutzer aus der Tabelle "users" zu löschen. Wir verwenden die Methode execute()
, um den Benutzer aus der Tabelle "users" zu löschen.
Schließlich fügen wir den folgenden Code hinzu, um die Flask-Anwendung auszuführen:
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=8080)