Angular with hapi js server jsonp
Angular with hapi js server jsonp
我在/api/profile
定义了一个端点,它接受post参数。
var http = require('http');
var serverConfig = require('../server.config.js');
var request = require('request');
module.exports = function(server){
server.route({
method: 'POST',
path: '/api/profile',
handler: getProfileData
});
function getProfileData(request, reply){
var battleTag = request.payload.battleTag;
getProfileDataHttp(battleTag, function(err, data){
if(err){
reply(new Error(err));
}
reply(data);
});
}
function getProfileDataHttp(battleTag, callback){
var key = serverConfig.battleNet.apiKey;
var tag = encodeURIComponent(battleTag);
var url = 'https://eu.api.battle.net/d3/profile/'+ tag + '/?locale=en_GB&callback=JSON_CALLBACK&apikey=' + key;
console.log(url);
request(url,function(error, response, body){
if(error){
callback(err);
}
if(!error && response.statusCode ==200){
callback(null, body);
}
});
}
};
它正在调用api与json回调,当我收到的数据是在格式:
JSON_CALLBACK({ json data here})
我如何才能让这个端点返回json数据,我已经尝试过JSON.parse()
,但它会导致服务器错误。
调用该端点的angular服务如下所示:
function getProfileData(battleTag){
var defer = $q.defer();
var tag = validTag(battleTag);
if(!tag){
defer.reject('Invalid Tag please use format 1[a-z]11[a-z0-9]#4[0-9]');
return defer.promise;
}
$http.post('/api/profile', {
battleTag: battleTag
})
.success(function(data){
if(data.reason){
defer.resolve(data.reason);
}
defer.resolve(data);
})
.error(function(err){
defer.reject(err);
});
return defer.promise;
}
调用将在使用$http时工作。但是我需要创建服务器来隐藏客户端的秘钥
你的问题有点令人困惑。你正在谈论JSONP,但你想直接获取数据。
JSONP的全部意义在于返回封装在您选择的函数中的数据。然后你只需要执行它。如果你想以直接的方式获取数据,不要使用JSONP。打个"正常"电话就行了。
在快速查看战网API之后,似乎要直接获取数据,您应该简单地忽略请求URL中的'callback'参数。
因此,您的请求URL看起来像这样:var url = 'https://eu.api.battle.net/d3/profile/'+ tag + '/?locale=en_GB&apikey=' + key;
相关文章:
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- 成功回调永远不会被JSONP请求调用
- 如何使用angular js从2个表(在sql server中)中提取数据
- 使用JSONP访问维基百科API
- 正在分析AngularJS中的JSONP文件
- 如何在cloud9中向server.js发送post请求
- 向Yahoo Finance API发出JSONP请求时获得400错误请求
- JSONP ajax调用出现错误
- 使用谷歌地图、C#、ASP.net、SQL Server显示带有标记的地图.地图未显示
- JSONP not working
- 使用Javascript或SQL Server将Outlook电子邮件发送到SQL表
- 在.js文件上使用Ajax获取JSONP
- 分析angular.js中的JSONP$http.json()响应
- getDataAsJSON()在PHP中是一个未定义的函数,但许多解释如何使用JSONP的网站都说要使用它
- 未捕获的类型错误:无法读取 null 的属性“removeChild”(使用 Instagram 的 JSONP 响应)
- 在 api 文档中 socket.io“Server(srv:http#Server, opts:Object)”是什么
- Angular with hapi js server jsonp