发送带有apollo-link-rest的纯文本请求正文

时间:2018-08-15 18:37:02

标签: react-native graphql apollo react-apollo apollo-link-rest

我正在尝试向使用friendlist模块获取表单数据的application/x-www-form-urlencoded Content-Type和纯文本字符串的端点发送POST请求,并且时间最艰难

以cURL形式,我要发出的请求如下所示:

apollo-link-rest

我已经将我的主要组件从curl -X POST http://tld.com/search -d include_all=My%20Search%20Term 的{​​{1}} HOC包起来了。

graphql

查询中引用的搜索react-apollo如下所示。

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函数。

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

现在,我意识到我对结果不做任何事情,但是在运行搜索代码时,似乎有未处理的承诺拒绝(这是React Native用黄色框警告告诉我的)。我也在用Reactotron检查该请求,该请求看起来不错,但仍然失败。我想知道我是否在配置runSearch方面缺少什么,或者是否有更好的方法可以检查从Apollo客户端发出的请求。

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

1 个答案:

答案 0 :(得分:0)

因此,事实证明,我已正确设置了以上所有内容。与react-apollo无关,这与我的Info.plist文件有关。我尚未启用iOS应用发出HTTP请求的功能。它只允许HTTPS。我使用Info.plist中的此项修复了该问题。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>