我正在做一个使用GraphQL的项目。我正在集成一个支付处理器,当用户支付成功时,支付处理器向指向我的服务器的webhook URL发送POST请求。现在我想知道如何实现这一点,考虑到GraphQL只暴露一个端点,在我的情况下/graphql
。我如何捕获传入的POST请求?为了更好的上下文,
如果我使用的是REST API,在成功支付后,webhook将发送一个POST请求,并将支付数据发送到/payment/verify
。但是我如何使用GraphQL服务器实现这一点,将数据从webhook直接发送到我的GraphQL服务器中的解析器?谢谢,期待您的回复。
2条答案
按热度按时间e4yzc0pl1#
除非支付处理器发送的post请求符合graphql请求的形式。请求的有效载荷必须符合标准的GraphQL AST。只有这样,服务器端的GraphQL才能解析AST,做validation和execution工作。
GraphQL post请求表单是:
字符串
您可以创建额外的路由和端点来用作webhook,但更好的方法是将webhook功能提取到独立的服务中。连接到数据库,执行业务逻辑和处理数据。
只有一个端点
/graphql
的GraphQL API服务器用于API网关服务。webhook服务是后端服务之一。的数据
bgtovc5b2#
是的,简短的回答是不可能。
要接收一个webhook,你需要一个带有特定主体的POST HTTP端点,graphql使用了不同的主体格式,以“query or mutation”开头,并需要它一个特定的响应,例如:
字符串
而且不可能用简单的方法绘制Map。
我的建议是创建一个简单的HTTP端点来接收webwook请求
例如,使用NestJS(这是我最喜欢的后端框架),您可以创建它。
第一个月
你得到了...
的数据
你可以像这样指定你的端点:
型
其中ConfirmPaymentInput为
型
这样,你就可以接收到webhook的有效载荷。