我要使用的API来自第三方,它阻止了跨域访问,因此我无法使用jquery和javascript来使用它...因此,我不得不在nodejs中创建一个脚本来使用此API。 ..
我想知道如何使用JavaScript使用nodejs从API到前端的数据?
请记住,此nodejs与我的前端在一个单独的文件中,并且在另一台服务器上运行。
var request = require("../../node_modules/request");
var options = { method: 'GET',
url: 'https://....apimanagement.us2.hana.ondemand.com/bot/v1/...',
qs: { Shop: '..'', PeriodoAte: '...' },
headers:
{ 'postman-token': '822e513f-da5e-4a0b-b403-1dd8fa46e86f',
'cache-control': 'no-cache',
authorization: 'Basic .........',
apikey: '....',
'content-type': 'application/json' },
json: true };
request(options, function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
答案 0 :(得分:0)
您需要一个Web服务器来侦听请求,以便与您的后端(Node.js)进行通信。如果您想简单一些,可以使用Express。您还可以使用JavaScript框架,其中有很多(Sails.js是快速入门的不错选择)。
如果您无法在服务器中安装Node.js,另一种选择是使用AWS Lambda快速创建可通过HTTP请求从前端使用的API。
答案 1 :(得分:0)
一个路径是:
最终得到了这样的测试
'use strict';
const Hapi = require('hapi');
const rp = require('request-promise');
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/',
handler: (request, h) => {
const options = {
method: 'GET',
uri: 'https://./..',
qs: {Shop: '..', PeriodoAte: '...'},
headers: {
'postman-token': '822e513f-da5e-4a0b-b403-1dd8fa46e86f',
'cache-control': 'no-cache',
authorization: 'Basic .........',
apikey: '...',
'content-type': 'application/json'
},
json: true
};
return rp(options).catch(e => {
console.log(`api call failed ${e}`);
return 'fail';
})
}
});
const init = async () => {
await server.start();
console.log(`Server running at: ${server.info.uri}`);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
现在您可以从节点启动它并访问'localhost:3000 /'
类似的东西,希望对您有所帮助
编辑://
要在客户端上消费,只需使用例如jquery来获取上面的代码提供的路由
以下是注释中要求的一些客户示例:
如果要从其他位置(而不是hapi api)提供html,则需要在HapiJS路由中启用cors。
server.route({
method: 'GET',
path: '/',
config: {
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', 'x-requested-with']
}
},
然后使用该端点的一种方法是jquery
<!doctype html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<input type="button" id="Button" value="Fetch"/>
<div id='main'></div>
<script type="text/javascript">
$(document).ready(function () {
$('#Button').click(() => {
$.ajax({
url: "http://localhost:3000/info", success: (result) => {
$("#main").text(result);
}
});
});
});
</script>
</body>
</html>