【问题标题】:Caling a web API through a JavaScript function通过 JavaScript 函数调用 Web API
【发布时间】:2018-07-14 03:00:04
【问题描述】:

我想从数据提供者“intrinio”中检索苹果公司的财务数据

我非常擅长 nodejs,所以我能够使用 nodejs 编写代码并将数据检索到 console.log 中。代码如下-

var https = require("https");
var username = "****";
var password = "****";
var auth = "Basic " + new Buffer(username + ':' + 
password).toString('base64');

var request = https.request({
method: "GET",
host: "api.intrinio.com",
path: "/companies?ticker=AAPL",
headers: {
    "Authorization": auth
 }
 }, function(response) {
 var json = "";
 response.on('data', function (chunk) {
    json += chunk;
 });
 response.on('end', function() {
    var company = JSON.parse(json);
    console.log(company);
 });
});

request.end();

我的问题是如何在 javascript(无节点)函数中编写此代码,并在单击按钮时调用 javascript 函数并在 html 页面上显示数据。请帮我解决这个问题。

【问题讨论】:

  • 您可以使用 XMLHttpRequest,但请充分注意,将其带到网页的前端会导致您的用户名/密码以某种方式暴露。
  • @ReyHaynes 您可以通过存储密码的服务器端(节点、php 等)路由请求。然后针对你自己的 api 使用 XMLHttpReqest。
  • @OnklMaps True...但问题表明他想基本上从前端做到这一点,没有节点本身。

标签: javascript node.js asp.net-web-api


【解决方案1】:

我建议您使用 Ajax 请求来执行此操作。只需使用 POST 方法并获取数据。

$.ajax({  
            type: "POST",  
            url: "https://api.intrinio.com/companies?ticker=AAPL",  
            header: auth,  
            success: function(dataString) {
                console.log(dataString); 
            }  
        });  

【讨论】:

  • 这里没有理由使用 jQuery。他也从未询问过使用 POST
【解决方案2】:

你可以使用 JavaScript XMLHttpRequest

Visit this link to see more

或者您可以使用以下基于承诺的相同功能 -

var callAPI = function(type, url, payload) {
return new Promise(function(resolve, reject) {
    var xhttp = new XMLHttpRequest();
    xhttp.open(type, url, true);
    xhttp.setRequestHeader("Content-type", "application/json");
    xhttp.setRequestHeader("Authorization", authToken);
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4) {
            resolve({
                status : this.status,
                data : JSON.parse(this.responseText)
            });
        }
    };
    if(type.toLowerCase() === 'post'){
        xhttp.send(JSON.stringify(payload));
    }else{
        xhttp.send();
    }
});
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2021-02-11
    • 1970-01-01
    • 2015-06-01
    • 2013-06-28
    相关资源
    最近更新 更多