首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用apollo-link-rest发送纯文本请求正文

使用apollo-link-rest发送纯文本请求正文
EN

Stack Overflow用户
提问于 2018-08-16 02:37:02
回答 1查看 839关注 0票数 0

我正在尝试向一个端点发送POST请求,该端点使用apollo-link-rest模块获取表单数据的application/x-www-form-urlencoded Content-Type和纯文本字符串,这是最困难的。

在cURL表单中,我想发出的请求如下所示:

代码语言:javascript
复制
curl -X POST http://tld.com/search -d include_all=My%20Search%20Term

我已经将我的主要组件包装在react-apollographql HOC中,如下所示。

代码语言:javascript
复制
export default graphql(gql`
  mutation productSearch($input: string) {
    search(input: $input) @rest(
      path: "/search",
      method: "post",
      endpoint: "search",
      bodySerializer: "search"
    ) {
      total
    }
  }
`,
{
  props: ({ mutate }) => ({
    runSearch: (text: string) => {
      if (mutate) {
        mutate({
          variables: {
            input: `include_all=${encodeURIComponent(text)}`,
          },
        });
      }
    },
  }),
})(SearchResults);

查询中引用的搜索bodySerializer如下所示。

代码语言:javascript
复制
const searchSerializer = (data: any, headers: Headers) => {
  headers.set('Content-Type', 'application/x-www-form-urlencoded');
  return { body: data, headers };
};

然后在我的组件中像这样调用runSearch函数。

代码语言:javascript
复制
async componentDidMount() {
  try {
    const result = await this.props.runSearch(this.props.searchText);
  } catch (error) {
    // report error & show message
  }
}

现在我意识到我没有对结果做任何事情,但在运行搜索代码时,似乎有一个未处理的promise rejection (这是React Native通过一个黄色框警告告诉我的)。我也在用Reactotron检查请求,请求看起来不错,但还是失败了。我想知道我是不是在配置apollo-link-rest时遗漏了什么,或者有没有更好的方法来检查来自Apollo客户端的请求。

这里的任何帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-08-17 00:35:23

因此,事实证明我上面的所有设置都是正确的。这不是react-apollo的问题,而是我的Info.plist文件的问题。我没有启用iOS应用程序发出超文本传输协议请求的功能。它只允许HTTPS。我在我的Info.plist中用这个条目修复了它。

代码语言:javascript
复制
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51864539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档