javascript - 如何在 GraphQL 服务器上接受来自远程服务器的 POST 请求
问题描述
我正在做一个目前使用 GrapQL 的项目。我正在集成支付处理器,当用户支付成功时,支付处理器会向 webhook URL 发送一个 POST 请求,该 URL 指向我的服务器。现在我想知道如何实现这一点,考虑到 GraphQL 在我的情况下只公开一个端点/graphql
。如何捕获进来的 POST 请求?为了更好的上下文,
如果我使用的是 REST API,则在成功付款后,webhook 会发送一个带有付款数据的 POST 请求到/payment/verify
. 但是如何使用 GraphQL 服务器来实现这一点,将数据从 webhook 直接获取到我的 GraphQL 服务器中的解析器?谢谢,期待您的回复。
解决方案
除非支付处理器发送的 post 请求符合 graphql 请求的形式。请求负载必须符合标准 GraphQL AST。只有这样,服务器端的 GraphQL 才能解析 AST,进行验证和执行工作。
GraphQL 发布请求表单是:
require('isomorphic-fetch');
fetch('http://localhost:4000', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ query: `
query {
todos {
edges {
node {
completed
id
text
}
}
}
}`
}),
})
.then(res => res.json())
.then(res => console.log(res.data));
您可以创建额外的路由和端点以用作 webhook,但更好的方法是将 webhook 功能提取到独立的服务中。连接数据库,执行业务逻辑,处理数据。
您只有一个端点的 GraphQL API 服务器/graphql
用于 API 网关服务。webhook 服务是后端服务之一。
推荐阅读
- powershell - 列出组成员的简单脚本
- python - 基于用户输入的类创建自动化
- javascript - 如何创建自定义 npm react 组件并在另一个 react 应用程序中使用它,例如“react-dropdown-select”
- powerbi - 如何动态消除顶行?
- java - snapscraft snap.yaml 用于在 ubuntu 上使用 swing ui 的 Java 应用程序
- c++ - 枚举变量的值不正确
- javascript - Javascript 的“document.querySelector().style.backgroundColor”将 HEX 转换为 RGB 是否有原因?
- amazon-web-services - 保护 s3 对象不被公开
- javascript - 反应脚本未正确执行
- python - 定义函数后用python中的数字替换字母