Skip to main content

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

PyPi Status license tests codecov Documentation Status python_versions

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flask-rest-jsonapi-next-0.43.1.tar.gz (124.2 kB view details)

Uploaded Source

Built Distribution

flask_rest_jsonapi_next-0.43.1-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

File details

Details for the file flask-rest-jsonapi-next-0.43.1.tar.gz.

File metadata

File hashes

Hashes for flask-rest-jsonapi-next-0.43.1.tar.gz
Algorithm Hash digest
SHA256 4f3c4152ee7d5dac59a20630ca9d3dd89e4c7a49f7e9d8600dd42ccdd7da7efb
MD5 5d64c954680205ec4889393fb7747ece
BLAKE2b-256 4f4d734d2db45fb56ab977b5b81877f68c7b45befa3e3c053481062333fbb22c

See more details on using hashes here.

File details

Details for the file flask_rest_jsonapi_next-0.43.1-py3-none-any.whl.

File metadata

File hashes

Hashes for flask_rest_jsonapi_next-0.43.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ea55559693e3d7df834beb52c31e3039fb8830920bf09c0dae708be47879e152
MD5 d8000e625a0f3b9a0d5a99a3c70f37a5
BLAKE2b-256 1a02c80b07e368d13bffafb4b51dd9e68c7b06dc11e50e7600ab2524f3cfc68b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page