Ca tombe bien car c'est le sujet de ce tutoriel ! Nous allons concevoir une API RESTful en utilisant python et son framework flask.
Flask est un framework vous permettant de créer des applications web HTTP en python.
Avant de commencer, assurez-vous d'avoir python et son gestionnaire de paquets pip installé sur votre machine.
Si ce n'est pas le cas, voici un article pour vous expliquer comment faire.
Ensuite, nous allons utiliser pip pour installer le paquet flask, à l'aide de cette commande :
pip3 install flaskMaintenant que python et flask sont installés, nous pouvons passer à la programmation de notre API. Créez un dossier pour votre projet (dans mon cas, une API de gestion de livres).
Dans ce dossier, créez un nouveau fichier nommé app.py et commencez le développement de votre API.
from flask import Flask, jsonify, request
app = Flask(__name__)
# List of all the books available
books = [
{"id": 1, "title": &quo
t;To Kill a Mockingbird", "author": "Harper Lee"},
{"id": 2, "title": &quo
t;1984", "author": "George Orwell"},
{"id": 3, "title": &quo
t;Pride and Prejudice", "author": "Jane Austen"}
]
# Route for the home page
@app.route('/')
def home():
return "Welcome to the Book API!"
# Route to get all books
@app.route('/api/books/all', methods=['GET'])
def get_books():
return jsonify(books)
# Route to get a specific book by ID
@app.route('/api/books/<int:book_id>', methods=['GET'])
def get_book(book_id):
book = next((book for book in books if book['id'] == book_id), None)
if book:
return jsonify(book)
return jsonify({"error": "Book not found"}), 404
# Route to add a new book
@app.route('/api/books/add', methods=['POST'])
def add_book():
new_book = request.json
new_book['id'] = len(books) + 1
books.append(new_book)
return jsonify(new_book), 201
if __name__ == '__main__':
app.run(debug=True)
Vous pouvez également vous rendre sur http://127.0.0.1:5000/api/books pour avoir la liste de l'intégralité des livres.
Bien que cette API soit très basique (pas de gestion de clés d'API, pas de base de données...), c'est un bon exerice pour apprendre flask.
Si vous souhaitez aller plus loin, vous pouvez ajouter un système de gestion de clés d'API en créant une liste des clés autorisées ainsi qu'un fonction vérifiant la clé envoyée.
keys=["c229caab-8593-4ad8-ba63-72a1f4db1bfa"]
def checkKey():
token=request.headers.get("X-Api-Key")
if token not in keys: #If token does not exists
return False
return True
@app.route('/api/books/add', methods=['POST'])
def add_book():
if not checkKey():
return jsonify({"error" : "Bad Api Key"}), 401
new_book = request.json
new_book['id'] = len(books) + 1
books.append(new_book)
return jsonify(new_book), 201
Voilà ! C'est tout pour aujourd'hui ! Si vous le souhaitez, vous pouvez tenter d'ajouter un système enregistrant les livres dans une base de données.
Si vous rencontrez des problèmes ou avez des questions, je suis joignable dans les commentaires.