gpt4 book ai didi

node.js - 如何将 Express REST 层放置在 Apollo GraphQL 服务器之上?

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:56 25 4
gpt4 key购买 nike

我正在考虑在 GraphQL 服务器 (Apollo Server v2) 之上放置一个 REST 层(使用 Express)来支持一些旧版应用程序。为了共享尽可能多的逻辑,REST 端点理想情况下应该包装我发送到 GraphQL 服务器的 GraphQL 查询,并且能够在将响应发送到客户端之前对响应进行少量修改。

我无法找出从 Express 路由中间件查询 apollo 服务器的最佳方法。到目前为止,我已经探索了两种不同的解决方案:

  1. 修改来自 REST 端点的请求,使 req.body 成为有效的 graphql 查询,将 req.url 更改为 /graphql,然后调用 next()。这样做的问题是,在将结果发送给客户端之前我无法修改结果,而我需要这样做。
  2. 从路由中间件使用 axios 调用 /graphql 端点,并在发送到客户端之前修改响应。这可行,但我觉得有点 hacky。

您还有其他建议,或者甚至是示例吗?

最佳答案

我相信解决方案2可以实现。

我已经做了类似的实现,但就我而言,GraphQL 服务从另一个(多个)GraphQL 服务获取数据。在某处我做了这样的事情:

export type serviceConnectionType = {
endpoint: string
queryType: {
query: Object // gql Object Query
variables: {
input: Object // query arguments (can be null)
}
}
}

export async function connectService(params: serviceConnectionType) {
const response = await fetch(params.endpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(params.queryType),
})

if (response.status === 404) {
console.warn('404 not found')
}

return response.json()
}

关于node.js - 如何将 Express REST 层放置在 Apollo GraphQL 服务器之上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51107356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com