我正在尝试向使用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客户端发出的请求。
这里的任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
因此,事实证明,我已正确设置了以上所有内容。与react-apollo
无关,这与我的Info.plist文件有关。我尚未启用iOS应用发出HTTP请求的功能。它只允许HTTPS。我使用Info.plist中的此项修复了该问题。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>