我正在做一个项目,目前正在使用GrapQL。我正在集成一个支付处理器,当用户支付成功时,支付处理器发送一个POST请求到webhook URL,这意味着指向我的服务器。现在,考虑到GraphQL只公开了一个端点,在我的例子中是/graphql
,我想知道如何实现这一点。如何捕获传入的POST请求?为了获得更好的上下文,
如果我使用的是REST API,那么在成功支付之后,webhook将向/payment/verify
发送一个包含支付数据的POST请求。但是,如何使用GraphQL服务器将数据直接从webhook获取到我的GraphQL服务器中的解析器?谢谢,期待您的回复。
发布于 2021-05-17 16:06:15
除非支付处理机发送的post请求符合graphql请求的形式。请求负载必须满足标准的GraphQL AST。只有这样,你服务器端的GraphQL才能解析出validation,execution才能正常工作。
GraphQL post请求表为:
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));
您可以创建额外的路由和端点以用作webhooks,但更好的方法是将webhooks函数提取到一个独立的服务中。连接到数据库、执行业务逻辑和处理数据。
只有一个终结点/graphql
的API服务器用于GraphQL网关服务。webhook服务是后端服务之一。
https://stackoverflow.com/questions/67550809
复制相似问题