基于Express开发商品列表查询接口
1、安装Mongoose,对mongodb的封装,提供了一些增删改查api,方便对数据库的操作。
2、创建model(实体),通过model对db数据库进行关联。
3、创建路由,通过路由去查接口调用model实体,再通过model实体的api去查数据库。
4、基于mongoose,实现商品列表的查询功能。
一句话就是,通过mongoose.model('name', SchemaObject)和new mongoose.Schema({})实例化一个描述数据类型的实体对象。通过mongoose.connect连接数据库,在express.router.get中通过modules(上面定义的实体对象).find({}, function(error, doc) {...})进行查找处理数据。
Restful API VS GraphQL
Restful API 问题:
1、前后端对于接口的控制权是交叉冲突的,后端返回给前端的接口可能在后来并不是前端想要的,前端会对接口返回的数据进行处理,前后端对于接口控制的配合会非常繁杂。
2、前端对于自己用到字段无直观印象,仅仅凭借url地址,无法回忆接口用到哪些字段,哪些是没用到的,哪些是用到的,所以会有接口文档,但如果接口频繁改动,接口文档会有滞后性,最终成为累赘。
3、api聚合的问题,页面上需要3个接口的数据,后端会做3个接口给我们,但不会把3个接口合并成1个接口返回给我们,因为需求是变的,可能页面会重构变成4个接口了。
以上问题都是由接口复杂且更新频繁的情况下,前后端因为接口产生的问题,费时费力。于是产生了GraphQL来解决这些问题。
GraphQL,是faceBook开源的API 查询语言,类似于数据库中SQL。
相比较,Restful比较依赖于后端比较隐式被动的数据约定(需要发送url请求才能查询),GraphQL更加显示,获取更新数据时更加主动。
GraphQL相当于把后端部分的SQL能力转移到了前端,但SQL的查询对象只能是数据库,而GraphQL的查询对象是数据源(可能是http接口,也可能是数据库查询的集合,也可能是静态的json文件),最强大的一点是可以对多个数据源的调用合并成一份完整的数据给前端来使用。它通过查询规则而不是通过特定的url地址,来对后端的数据源调用,并且可以只选择需要用到的字段,后端也只返回这些字段。
网友评论