Open cassiehuang opened 5 years ago
// 创建模式,模式内包含很多类型,Query是必须的 const schema = buildSchema(` type Query { hello: String, book: [Book], author: String, } // 这是资源类型的定义 type Book { id: Int, title: String, } `);
const root = { hello: () => 'hello world', author: () => 'hello author', book: () => ([{ id: 1, title: 'cassie book'}, { id: 2, title: 'cassie book 2'}]) };
// 发起请求 graphql(schema, '{ book { title }}', root).then((response) => { console.dir(response.data); })
* 假设一个场景,用户需要获取关于某个用户的详细信息,多个地方用到,分别需要不同的参数,有的选择全部返回,有的则需要设置多个restful接口来取不同的数据 * 如果使用graphql, 则只需要定义一种query type, graphql内部会根据请求的参数返回相应的数据 * 假设用户查找某一类别名下的所有商品,那么服务器需要3个接口,根据类别名查找类别id,根据类别id查找商品 * resuful的,用户必须新增一个接口,来根据类别名查找类别商品,里面两次query * graphql,则不需要。只需要定义两次query的结构就可以了
const root = { hello: () => 'hello world', author: () => 'hello author', book: () => ([{ id: 1, title: 'cassie book'}, { id: 2, title: 'cassie book 2'}]) };
// 发起请求 graphql(schema, '{ book { title }}', root).then((response) => { console.dir(response.data); })