【问题标题】:How to pass request body into GraphQL Context?如何将请求正文传递到 GraphQL 上下文中?
【发布时间】:2016-09-16 19:22:02
【问题描述】:

我目前正在尝试将请求正文放入上下文中,因为正文的一部分包含需要解码的 JWT。但是,当我尝试以下操作时,我的上下文未定义:

    app.use('/', graphqlHTTP((req) => ({
      schema: Schema,
      context: req.body,
      pretty: true,
      graphiql: false
    })));

我注销了 req,但我没有在其中看到 body。我正在使用一个名为 react-reach 的库,它在请求的正文中添加了以下内容:

    {
      query: {...},
      queryParams: {...},
      options: {
       token: '...' // <-- I'm passing the token into options
      }
    }

我知道正文正在被解释,因为我在正文中的查询/突变正在被解释和执行。只是在传递给上下文时似乎找不到它。

【问题讨论】:

标签: node.js api graphql graphql-js


【解决方案1】:

你的req.bodyundefined,除非你使用额外的body-parser 中间件。来自 Express 文档:

req.body

包含在请求正文中提交的数据键值对。默认情况下,它是未定义的,并且在您使用 body-parser 和 multer 等正文解析中间件时填充。 http://expressjs.com/en/api.html#req.body

graphqlHTTP 正在做自己的事情来解析请求正文(请参阅here),这就是您的查询/突变有效的原因。

添加中间件(如 body-parser 或 multer)来解析请求正文应使其在 req.body 上可用,然后您的上下文应填充您正在寻找的内容。

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 2017-02-18
    • 2023-01-28
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2020-05-11
    相关资源
    最近更新 更多