如何在graphql中返回post请求的响应

Posted

技术标签:

【中文标题】如何在graphql中返回post请求的响应【英文标题】:How to return the response of a post request in qraphql 【发布时间】:2021-12-26 23:52:24 【问题描述】:

我正在开发一个在后端使用 GraphQL 的应用程序,我想实现一个人脸比较方法。我正在使用facepp npm package,它为我提供了一个 API 来执行比较。我遇到的问题是,当我的解析器运行时,它会在收到来自 facepp 的响应之前完成。如何让它返回来自 facepp 的响应?

    module.exports = 
      Mutation: 
         checkFace: async () => 
           console.log("Checking.....");

        let confidence;

        var parameters = 
          image_url1: "link to image 1",

          image_url2: "link to image 2",
        ;

        facepp.post("/compare", parameters, function (err, res) 
            if (!err) 
                confidence = res.confidence;
              //return res.confidence doesn't work
             else 
                confidence = "There was an error"
            
        );

        return confidence
    ,
,

;

【问题讨论】:

不要复制...使用等待!! 你能再澄清一下吗?请问有什么办法? 【参考方案1】:

经过几次试验和研究,我想出了一个可行的解决方案。我的原始代码中的问题是我没有正确处理 facepp.post 方法的异步处理程序。如果有人遇到同样的问题,下面是我的代码的工作实现。

module.exports = 
    Mutation: 
        checkFace: async () => 
            let confidence;
            const callCheck = () => 
                return new Promise((resolve, reject) => 
                    var parameters = 
                        image_url1: "link to image 1",
                        image_url2: "link to image 2",
                    ;
                    facepp.post("/compare", parameters, function (err, 
                  res) 
                        if (!err) 
                            confidence = res.confidence;
                            resolve();
                         else 
                            confidence = "error";
                            reject();
                        
                    );
                );
            ;
            await callCheck();
            return confidence;
        ,
    ,
;

【讨论】:

以上是关于如何在graphql中返回post请求的响应的主要内容,如果未能解决你的问题,请参考以下文章

iframe发送post请求

GraphQL 查询 Post with Python Request

如何在颤动中返回 POST 响应对象?

PHP:如何从 $.post 请求返回数据作为响应?

在 Jest 中测试失败时如何打印请求和响应?

如何在 TypeScript 中获取 GraphQL 架构