# Flask-REST-JSONAPI **Flask-REST-JSONAPI** 是一款快速构建REST API的Flask插件。框架在遵循**JSONAPI 1.0**规范的同时,保持着极强的灵活性。框架设计之初,就考虑到了生产环境的复杂性,所以在**Flask-REST-JSONAPI**中就引入了**逻辑数据抽象层**的概念,框架中叫做**Resource(资源)**。Resource可以通过**Data layer(数据层)**接入任何ORM框架或数据库。(译者注:逻辑数据对应的是物理数据,数据库储存的是物理数据,但有时API返回的数据,不能直接返回数据库的物理数据,需要进行逻辑加工后,才能返回给用户。) ## 核心概念 --- ![](_static/schema.png) * JSON API 1.0 规范](http://jsonapi.org/):广受欢迎的**REST JSON API**规范,规定了客户端与服务端进行数据交互的方式。遵循规范有助于进行团队合作开发,因为规范的表达十分精确,且易于分享。正是由于规范,API也包含了许多特性,像健壮的request和response结构、过滤、分页、稀疏字段、外键查询以及强大的错误格式化等。 * **逻辑数据抽象层**:实际开发中,我们需要返回数据资源给客户端,但通常来说,返回给用户的数据并与数据库的表结构完全相同。比如,有时我们不想暴露锁一个表的所有属性,亦或需要计算额外的属性,亦或创建资源的数据来自于不同的数据库。Flask-REST-JSONAPI 通过[Marshmallow](https://marshmallow.readthedocs.io/en/latest/) / [marshmallow-jsonapi](https://marshmallow-jsonapi.readthedocs.io/) 为我们创建逻辑数据抽象层,便于你以灵活的方式暴露你的数据。 * **数据层**:数据层在框架中作为数据CRUD的接口,将资源和数据的连接起来。正是由于引入了数据层,我们能使用任何数据库或者ORM框架来对接资源。框架已经实现了SQLALchemy ORM的所有功能,但同时我们也可以定制数据层,来接入自己数据库的数据。我们还可以在数据层接入多个数据库和ORM,发送通知或在CRUD过程中加入定制功能。 ## 特性 --- Flask-REST-JSONAPI 拥有的特性包括: - 关系数据管理 - 强大的过滤功能 - 外键包含查询 - 稀疏字段 - 分页 - 排序 - 权限管理 - OAuth支持 ## 用户指南 --- 以下文档演示了如何配合Flask使用Flask-REST-JSONAPI。 [目录](/) ## API参考 --- 如果你想要查找函数、类或方法的具体信息,以下文档可供你参考。 - [Index](https://flask-rest-jsonapi.readthedocs.io/en/latest/genindex.html) - [Module Index](https://flask-rest-jsonapi.readthedocs.io/en/latest/py-modindex.html)