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