如何将请求 body 传递到 GraphQL 上下文中?
How to pass request body into GraphQL Context?
我目前正在尝试将请求 body 放入上下文中,因为 body 的一部分包含需要解码的 JWT。但是,当我尝试以下操作时,上下文未定义:
app.use('/', graphqlHTTP((req) => ({
schema: Schema,
context: req.body,
pretty: true,
graphiql: false
})));
我注销了请求,但我没有在其中看到 body。我正在使用一个名为 react-reach 的库,它根据请求将以下内容添加到 body:
{
query: {...},
queryParams: {...},
options: {
token: '...' // <-- I'm passing the token into options
}
}
我知道 body 正在被解释,因为 body 中的 queries/mutations 正在被解释和执行。传递给上下文时似乎找不到它。
您的 req.body
是 undefined
除非您使用额外的正文解析器中间件。来自 Express 文档:
req.body
Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as body-parser and multer.
http://expressjs.com/en/api.html#req.body
graphqlHTTP
正在做自己的事情来解析请求正文(请参阅 here),这就是您的 queries/mutations 工作的原因。
添加中间件(如 body-parser 或 multer)来解析请求正文应该使其在 req.body
上可用,然后您的上下文应该会填充您要查找的内容。
我目前正在尝试将请求 body 放入上下文中,因为 body 的一部分包含需要解码的 JWT。但是,当我尝试以下操作时,上下文未定义:
app.use('/', graphqlHTTP((req) => ({
schema: Schema,
context: req.body,
pretty: true,
graphiql: false
})));
我注销了请求,但我没有在其中看到 body。我正在使用一个名为 react-reach 的库,它根据请求将以下内容添加到 body:
{
query: {...},
queryParams: {...},
options: {
token: '...' // <-- I'm passing the token into options
}
}
我知道 body 正在被解释,因为 body 中的 queries/mutations 正在被解释和执行。传递给上下文时似乎找不到它。
您的 req.body
是 undefined
除非您使用额外的正文解析器中间件。来自 Express 文档:
req.body
Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as body-parser and multer. http://expressjs.com/en/api.html#req.body
graphqlHTTP
正在做自己的事情来解析请求正文(请参阅 here),这就是您的 queries/mutations 工作的原因。
添加中间件(如 body-parser 或 multer)来解析请求正文应该使其在 req.body
上可用,然后您的上下文应该会填充您要查找的内容。