Flask extension to create REST web api according to JSONAPI 1.0 specification with Flask, Marshmallow and data provider of your choice (SQLAlchemy, MongoDB, ...)
Project description
flask-rest-jsonapi-next
This is a fork of miLibris/flask-rest-jsonapi project.
flask-rest-jsonapi-next
is a flask extension for building REST APIs around a strong specification
JSON:API 1.0.
Documentation: http://flask-rest-jsonapi-next.readthedocs.io/en/latest/
Install
pip install flask-rest-jsonapi-next
A minimal API
from flask import Flask
from flask_rest_jsonapi_next import Api, ResourceDetail, ResourceList
from flask_sqlalchemy import SQLAlchemy
from marshmallow_jsonapi.flask import Schema
from marshmallow_jsonapi import fields
# Create the Flask application and the Flask-SQLAlchemy object.
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
# Create model
class Person(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
# Create the database.
db.create_all()
# Create schema
class PersonSchema(Schema):
class Meta:
type_ = 'person'
self_view = 'person_detail'
self_view_kwargs = {'id': '<id>'}
self_view_many = 'person_list'
id = fields.Integer(as_string=True, dump_only=True)
name = fields.Str()
# Create resource managers
class PersonList(ResourceList):
schema = PersonSchema
data_layer = {'session': db.session,
'model': Person}
class PersonDetail(ResourceDetail):
schema = PersonSchema
data_layer = {'session': db.session,
'model': Person}
# Create the API object
api = Api(app)
api.route(PersonList, 'person_list', '/persons')
api.route(PersonDetail, 'person_detail', '/persons/<int:id>')
# Start the flask loop
if __name__ == '__main__':
app.run()
This example provides the following API structure:
URL | method | endpoint | Usage |
---|---|---|---|
/persons |
GET | person_list | Get a collection of persons |
/persons |
POST | person_list | Create a person |
/persons/<int:person_id> |
GET | person_detail | Get person details |
/persons/<int:person_id> |
PATCH | person_detail | Update a person |
/persons/<int:person_id> |
DELETE | person_detail | Delete a person |
Thanks
Flask, marshmallow, marshmallow_jsonapi, sqlalchemy, Flask-RESTful and Flask-Restless are awesome projects. These libraries gave me inspiration to create flask-rest-jsonapi-next, so huge thanks to authors and contributors.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file flask-rest-jsonapi-next-0.43.1.tar.gz
.
File metadata
- Download URL: flask-rest-jsonapi-next-0.43.1.tar.gz
- Upload date:
- Size: 124.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f3c4152ee7d5dac59a20630ca9d3dd89e4c7a49f7e9d8600dd42ccdd7da7efb |
|
MD5 | 5d64c954680205ec4889393fb7747ece |
|
BLAKE2b-256 | 4f4d734d2db45fb56ab977b5b81877f68c7b45befa3e3c053481062333fbb22c |
File details
Details for the file flask_rest_jsonapi_next-0.43.1-py3-none-any.whl
.
File metadata
- Download URL: flask_rest_jsonapi_next-0.43.1-py3-none-any.whl
- Upload date:
- Size: 37.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea55559693e3d7df834beb52c31e3039fb8830920bf09c0dae708be47879e152 |
|
MD5 | d8000e625a0f3b9a0d5a99a3c70f37a5 |
|
BLAKE2b-256 | 1a02c80b07e368d13bffafb4b51dd9e68c7b06dc11e50e7600ab2524f3cfc68b |