javascript - 如何在 RESTDataSource 请求中包含 header ?

标签 javascript apollo-server

我正在尝试使用 apollo RESTDataSource 来包装我的休息 api。我需要将一些 header 传递给 api 调用。

我遵循文档中的示例:https://www.apollographql.com/docs/apollo-server/features/data-sources#intercepting-fetches

这是我的代码:

  willSendRequest(request: RequestOptions) {
    console.log(`request 1: ${JSON.stringify(request)}`);
    request.headers.set('Authorization', this.context.authorization);
    console.log(`request 2: ${JSON.stringify(request)}`);
  }

我希望 header 包含“授权”。但它始终是空的。

上面代码的日志:

request 1: {"method":"POST","path":"partnerinvoices","body":{"command": "input","params":{},"headers":{}}
request 2: {"method":"POST","path":"partnerinvoices","body":{"command":"input","params":{},"headers":{}}

我可以毫无问题地覆盖 willSendRequest 方法中的主体和参数。

最佳答案

有几种方法可以实现这一点,

在扩展 RESTDataSource 的 Datasource 类中,在发出请求之前设置 header

willSendRequest(request) {
 request.headers.set('Authorization', 'Bearer .....')
}

或作为数据源方法中的第三个参数(post、get、put、...)

this.post('endpoint', {}, { headers: { 'Authorization': 'Bearer ...' } })

关于javascript - 如何在 RESTDataSource 请求中包含 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55896080/

相关文章:

javascript - 对数组中具有字符串键的对象进行排序

javascript - 比较两个日期无法正常工作

javascript - 将变量从一个 HTML 页面传递到另一个页面的最佳做法是什么?

javascript - 为什么安装 npm 软件包会重新安装所有其他软件包?

graphql - 我们如何为 Feathersjs + Apollo v2 使用钩子(Hook)?

graphql - 在 Apollo Server 中调用另一个解析器的最佳方法是什么?

javascript - jQuery 确定 div 中的鼠标位置

python-3.x - Python Graphite 烯与 Apollo Federation 集成时出现问题

neo4j - 如何在我的 Graphql 模式中表示 Neo4j 关系属性?

next.js - 在 next.js api 中使用订阅的 Apollo Server 路由 : websockets trouble