76 lines
2.6 KiB
Python
76 lines
2.6 KiB
Python
from flask import Flask, request, jsonify
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
|
|
app = Flask(__name__)
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
|
|
db = SQLAlchemy(app)
|
|
|
|
class User(db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
name = db.Column(db.String(100), nullable=False)
|
|
email = db.Column(db.String(100), nullable=False, unique=True)
|
|
|
|
def to_dict(self):
|
|
return {'id': self.id, 'name': self.name, 'email': self.email}
|
|
|
|
class Book(db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
title = db.Column(db.String(100), nullable=False)
|
|
author = db.Column(db.String(100), nullable=False)
|
|
|
|
def to_dict(self):
|
|
return {'id': self.id, 'title': self.title, 'author': self.author}
|
|
|
|
@app.route('/users', methods=['GET'])
|
|
def get_users():
|
|
users = User.query.all()
|
|
return jsonify([user.to_dict() for user in users])
|
|
|
|
@app.route('/users', methods=['POST'])
|
|
def create_user():
|
|
data = request.json
|
|
user = User(name=data['name'], email=data['email'])
|
|
db.session.add(user)
|
|
db.session.commit()
|
|
return jsonify(user.to_dict()), 201
|
|
|
|
@app.route('/books', methods=['GET'])
|
|
def get_books():
|
|
books = Book.query.all()
|
|
return jsonify([book.to_dict() for book in books])
|
|
|
|
@app.route('/books', methods=['POST'])
|
|
def create_book():
|
|
data = request.json
|
|
book = Book(title=data['title'], author=data['author'])
|
|
db.session.add(book)
|
|
db.session.commit()
|
|
return jsonify(book.to_dict()), 201
|
|
|
|
@app.route('/users/<int:user_id>', methods=['GET'])
|
|
def get_user(user_id):
|
|
user = User.query.get(user_id)
|
|
if user is None:
|
|
return jsonify({'error': 'User not found'}), 404
|
|
return jsonify(user.to_dict())
|
|
|
|
@app.route('/books/<int:book_id>', methods=['GET'])
|
|
def get_book(book_id):
|
|
book = Book.query.get(book_id)
|
|
if book is None:
|
|
return jsonify({'error': 'Book not found'}), 404
|
|
return jsonify(book.to_dict())
|
|
|
|
if __name__ == '__main__':
|
|
with app.app_context():
|
|
db.create_all()
|
|
app.run(debug=True)
|
|
|
|
Ce code crée une API REST avec Flask et SQLAlchemy pour gérer des utilisateurs et des livres. Les routes disponibles sont :
|
|
|
|
- `/users` : récupérer tous les utilisateurs, créer un nouveau utilisateur
|
|
- `/books` : récupérer tous les livres, créer un nouveau livre
|
|
- `/users/<int:user_id>` : récupérer un utilisateur par ID
|
|
- `/books/<int:book_id>` : récupérer un livre par ID
|
|
|
|
Les données sont stockées dans une base de données SQLite. Les utilisateurs et les livres sont représentés par des objets Python qui peuvent être convertis en dictionnaires pour être envoyés dans les réponses HTTP. |