Mas*_*one 6 node.js apollo graphql apollo-server
在graphQLOptions中,context和rootvalue之间有什么区别?
我何时应该使用另一个,何时应该使用另一个?
目前我正在将连接器和其他敏感数据附加到上下文中,这样安全吗?用户可以读取查询的上下文或根值吗?
小智 7
RootValue是传递给查询入口点的初始值。默认情况下它是未定义的,但是 Apollo 允许您使用一些适合您的用例的值来为查询设定种子。它可以作为解析器函数签名中的第一个参数访问。
context是所有解析器都可用的共享引用。通常它是一个 key/val 对的对象,包含有状态外部连接或元关注点的句柄,如用户/身份验证/等。
用户(我假设您的意思是客户)只能读取您从解析器返回的内容;内省查询中不表示上下文。如果您的解析器需要访问权限来履行其职责,那么将敏感数据和连接器(在 Apollo 范式中)放在那里是安全的。
小智 6
GraphQL类型/字段概念是非常递归的.通常调用的RootQuery是与模式中任何其他类型一样的自定义类型.但是,通常,此RootQuery类型仅包含动态解析的字段,但这不是限制.如果您希望人们访问类型name上的字符串标量字段,User则不需要为其编写解析器函数,只要解析为任何User返回字段的对象包含该name属性即可; 这与该方法的工作方式相同RootValue,但该对象将是通过提供的对象rootValue.
另一方面,上下文是可供每个解析器使用的内容,但任何用户都不能通过GraphQL服务器发送查询来查询上下文 - 从而使上下文成为保存敏感数据(如会话信息)的理想位置.
示例: 这里是rootValue的示例用法:https://runkit.com/lucasconstantino/graphql-root-value-sample
| 归档时间: |
|
| 查看次数: |
2157 次 |
| 最近记录: |