我正在尝试对以下API进行JSONP调用:https://api.openrates.io/latest
我的服务代码:
this.http
.jsonp<Response>("http://api.openrates.io/latest", "callback")
.subscribe(res => console.warn(res));
从DevTools的“网络”选项卡中,我可以看到请求已成功,并且正在获取JSON对象:
但是我收到以下异常,并且我无法正确订阅响应:
我进行JSONP调用的方式是否有问题?还是服务器回答了问题(JSON而不是回调)? 为了完整起见,我使用Angular 7和Angular CLI。
答案 0 :(得分:0)
问题属于响应类型。其非常纯的json类型,但是
jsonp
格式应类似于-
/**/ng_jsonp_callback_7({,…});
has_more: false
items: [{new_active_users: 9, total_users: 9580180, badges_per_minute: 5.37, total_badges: 28924187,…}]
quota_max: 300
quota_remaining: 298
因此,可以使用
jsonp
方法来代替使用get
。
答案 1 :(得分:0)
也许是,您应该尝试使用可管道运算符调用.map。
return this.http
.jsonp<Response>("http://api.openrates.io/latest", "callback").pipe(
map(res=>res),
tap(res=>console.log(res))
);
还要检查JSON响应是否有效。
答案 2 :(得分:0)
暂时,如果您只需要在本地测试您的 API 端点,您只需运行一个新的 Chrome 会话,在该会话中禁用网络安全。
你可以点击 Window + R 然后执行这个脚本。
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security