使用 axios 请求 graphql 查询

Posted

技术标签:

【中文标题】使用 axios 请求 graphql 查询【英文标题】:Request a graphql query with axios 【发布时间】:2021-07-09 22:30:03 【问题描述】:

我正在尝试使用 axios 通过 graphql 查询发出请求,但失败了。 这是我的查询

query 
  workspace(workspaceName: "***") 
    name
    company 
      name
     
  

还有我的代码块

  axios(
        url: "https://testurl.com/graphql",
        method: 'post', 
        query: ` query($workspaceName: String!)
           
              workspace(workspaceName: $workspaceName) 
                 name
                 company 
                   name
                  
               
           
           `,
        variables: 
           workspaceName: CookieHelper.workspaceName,
        ,
        forceResolve: resolve,
     )
        .then(res => 
           resolve(res);
        )
        .catch(err => 
           reject(err);
        );

我这样设置是因为 workspaceName 的值会参数化地工作。

【问题讨论】:

【参考方案1】:

Axios 在选项对象中没有query 属性。您尝试发送到服务器的所有数据都应分配给data 属性。或者使用axios.post函数,其中第二个参数与axios()上的data相同。

const query = `
query($workspaceName: String!) 
  workspace(workspaceName: $workspaceName) 
    name
    company 
      name
     
  
`;

const variables = 
  workspaceName: CookieHelper.workspaceName,
;

// Use `data` or..
axios(
  url: "https://testurl.com/graphql",
  data: 
    query,
    variables
  
).then(res => 
  resolve(res);
).catch(err => 
  reject(err);
);

// ..use post where the second parameter is the same as data.
axios.post("https://testurl.com/graphql", 
  query,
  variables
).then(res => 
  resolve(res);
).catch(err => 
  reject(err);
);

我不确定forceResolve: resolve 做了什么,所以我在示例中省略了它。

【讨论】:

以上是关于使用 axios 请求 graphql 查询的主要内容,如果未能解决你的问题,请参考以下文章

使用 axios 将突变发布到 graphql

强类型 GraphQL 查询

GraphQL从axios返回空数据[重复]

GraphQL 如何使用 Nestjs 或 type-graphql 设置查询 MongoDB ref 集合

harbor rest api 转graphql api

angular, apollo-client, graphQL - 从 graphql 查询中选择所有字段