Maison >développement back-end >Tutoriel Python >Bâtiment des API RESTfuls avec flacon: ORM indépendant

Bâtiment des API RESTfuls avec flacon: ORM indépendant

William Shakespeare
William Shakespeareoriginal
2025-03-09 10:46:17965parcourir

Ce tutoriel conclut une série en trois parties sur la construction d'API RESTful avec Flask, démontrant une approche ORM-Agnostique à l'aide de flacon. Contrairement aux versements précédents qui reposaient sur Sqlalchemy, cette méthode résume le mappeur relationnel d'objet (ORM), offrant une flexibilité pour travailler avec n'importe quel orm.

L'exemple de l'application reste cohérent pour plus de clarté, bien qu'il utilise sqlalchemy en interne. Le tutoriel présente comment adapter cette approche à d'autres orms.

Installation de dépendance

pour commencer, installez la dépendance nécessaire:

pip install Flask-Restful

Configuration de l'application

Supprimez tout code des pièces du didacticiel précédentes pour un démarrage propre. La configuration de l'application est modifiée comme suit:

flask_app/my_app/__init__.py

from flask import Flask
from flask_restful import Api

app = Flask(__name__)
api = Api(app)

flask_app/my_app/product/views.py

import json
from flask import request, Blueprint, abort
from my_app import db, app, api
from my_app.product.models import Product
from flask_restful import Resource, reqparse

catalog = Blueprint('catalog', __name__)

parser = reqparse.RequestParser()
parser.add_argument('name', type=str)
parser.add_argument('price', type=float)


@catalog.route('/')
@catalog.route('/home')
def home():
    return "Welcome to the Catalog Home."


# FLASK RESTFUL ENDPOINTS

class ProductApi(Resource):

    def get(self, id=None, page=1):
        if not id:
            products = Product.query.paginate(page, 10).items
        else:
            products = [Product.query.get(id)]
        if not products:
            abort(404)
        res = {}
        for product in products:
            res[product.id] = {
                'name': product.name,
                'price': product.price,
            }
        return json.dumps(res)

    def post(self):
        args = parser.parse_args()
        name = args['name']
        price = args['price']
        product = Product(name, price)
        db.session.add(product)
        db.session.commit()
        res = {}
        res[product.id] = {
            'name': product.name,
            'price': product.price,
        }
        return json.dumps(res)


api.add_resource(
    ProductApi,
    '/api/product',
    '/api/product/<id>',
    '/api/product/<id>/<page>'
)</page></id></id>

reqparse gère la validation des données du formulaire.

Test

Le test est identique au tutoriel précédent. Les URL de routage restent inchangées.

Building RESTful APIs With Flask: ORM Independent

Conclusion

Cette dernière partie démontre la construction d'API RESTful indépendante de l'ORM avec Flask, terminant la série. Une exploration plus approfondie des méthodes couvertes est encouragée, en s'appuyant sur les connaissances fondamentales présentées.

Ce message comprend des contributions d'Esther Vaati, développeur de logiciels et écrivain pour Envato TUTS.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn