Home >Backend Development >Python Tutorial >Building RESTful APIs With Flask: An ORM With SQLAlchemy
This tutorial continues our three-part series on building RESTful APIs with Flask. Part one demonstrated building APIs directly with Flask, offering flexibility but requiring significant code. This part streamlines the process using Flask-Restless, a Flask extension that generates RESTful APIs from SQLAlchemy database models. We'll use the same example application for consistency. The complete source code for the previous project is available on our GitHub repository.
Installing Dependencies
To integrate Flask-Restless, install it using pip:
pip install Flask-Restless
The Application
Flask-Restless simplifies API creation. The create_api()
method, within the model definition, allows you to specify supported HTTP methods (GET, POST, DELETE, PUT) and optional pre- and post-processing functions for each.
Here's an example:
manager.create_api( Product, methods=['GET', 'POST', 'DELETE'], preprocessors={ 'GET_SINGLE': ['a_preprocessor_for_single_get'], 'GET_MANY': ['another_preprocessor_for_many_get'], 'POST': ['a_preprocessor_for_post'] }, postprocessors={ 'DELETE': ['a_postprocessor_for_delete'] } )
This example defines preprocessors and postprocessors for GET (single and multiple resource retrieval), and POST and DELETE requests. Preprocessors and postprocessors operate without explicit return values; experimentation is encouraged.
Conclusion
This part demonstrated building a RESTful API with Flask and Flask-Restless, significantly reducing code compared to the previous method. The final part of this series will explore another popular Flask extension for creating RESTful APIs, this time independent of the database modeling tool.
This post has been updated with contributions from Esther Vaati, a software developer and writer for Envato Tuts .
The above is the detailed content of Building RESTful APIs With Flask: An ORM With SQLAlchemy. For more information, please follow other related articles on the PHP Chinese website!