传统的 restful 实现 返回 users 一般至少要两个接口
/user/id
/users
迁移到 graphql 基本就变成了
fields: {
user: {
type: userType,
description: 'Returns a single user',
args: {
id: {type: GraphQLString}
},
resolve: function (_, args) {
return UserService.findOne(args.id);
}
},
users: {
type: new GraphQLList(userType),
description: 'Returns a list of users',
resolve: function () {
return UserService.find()
}
}
}
但是这里有个盲点是,restful 是因为字段都是后端决定的,导致查找同一个对象必须要两个接口来适应的不同的页面
在 graphql 里面一个 query 返回的字段是由前端决定的, users 可以提供的信息 能够看做 user 接口的超集。 在这种情况下 感觉单独的 user 接口已经没有存在的必要, 但是很多地方,包括某些教程里 都会 拿 user 和 users 的接口作为案例。
问题来了 graphql 下 user 的 query 是否任有存在的必要性