【问题标题】:How to accept POST request from a remote server on a GraphQL Server如何在 GraphQL 服务器上接受来自远程服务器的 POST 请求
【发布时间】:2021-08-05 14:25:34
【问题描述】:

我正在处理一个当前使用 GrapQL 的项目。我正在集成支付处理器,当用户支付成功时,支付处理器向 webhook URL 发送一个 POST 请求,该 URL 指向我的服务器。现在我想知道如何实现这一点,考虑到 GraphQL 只公开一个端点,在我的例子中是 /graphql。如何捕获进来的 POST 请求?为了更好的上下文,

如果我使用的是 REST API,在成功付款后,webhook 会发送一个带有付款数据的 POST 请求到/payment/verify。但是如何使用 GraphQL 服务器来实现这一点,将数据从 webhook 直接获取到我的 GraphQL 服务器中的解析器?谢谢,期待您的回复。

【问题讨论】:

    标签: javascript node.js express graphql apollo-server


    【解决方案1】:

    除非支付处理器发送的post请求符合graphql请求的形式。请求负载必须符合标准 GraphQL AST。只有这样,您服务器端的 GraphQL 才能解析 AST,使 validationexecution 起作用。

    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 的 GraphQL API 服务器用于 API 网关服务。 webhook 服务是后端服务之一。

    【讨论】:

    • 这是我遵循的路线,我刚刚创建了一个独立服务来接受 POST 请求并在那里进行了所有必要的业务验证。感谢您对解析 AST 的额外见解
    猜你喜欢
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 2011-08-09
    • 2012-09-21
    • 1970-01-01
    • 2012-04-18
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多