【问题标题】:Serve node api data to client side js将节点 api 数据提供给客户端 js
【发布时间】:2017-03-03 15:13:15
【问题描述】:

我正在使用 request 进行 api 调用,并将一些数据返回到我的应用程序。 我能够在我的代码的正文响应中接收数据

var express = require('express');
var request = require('request');
var app = express();

app.get('/', function(req, res){
    res.sendFile(__dirname + "/index.html");
    request('https://api.darksky.net/forecast/apikey/37.8267,-122.4233', function (error, response, body) {
      console.log('error:', error); 
      console.log('statusCode:', response && response.statusCode); 
      console.log('body:', body); 
    });
}).listen(3000);

console.log('Server is up and running');

调用 api 然后我在 / 处点击我的索引文件 - 到目前为止,一切都很好

但是,我想将正文响应连同我的数据一起发送到一个 react js 文件,这样我就可以使用这些数据为客户端提供服务。 我似乎找不到有关如何将数据提供给另一个 javascript 文件的任何帮助。

【问题讨论】:

  • 你能发布代码来展示你是如何在你的 react js 文件中发出 GET 请求的吗?
  • 问题是我不知道该怎么做,但我想我会使用 axios 或 jQuery 来拨打电话。但是我应该只对上面的文件提出请求吗?
  • 我会创建一个新的app.get 路由,专门用于返回您从 api.darksky.net 请求收到的数据,以将其与返回 index.html 的主页路由分开。在那,你可以return res.json(body)

标签: javascript node.js reactjs


【解决方案1】:

我认为您应该在一条路径中提供索引,而在另一条路径中提供 darksky 请求。

var express = require('express');
var request = require('request');
var app = express();

app.get('/', function(req, res){
    res.sendFile(__dirname + "/index.html");
});

app.get('/api/forecast, function(req, res) {
    request('https://api.darksky.net/forecast/apikey/37.8267,-122.4233', function (error, response, body) {
        console.log('error:', error); 
        console.log('statusCode:', response && response.statusCode); 
        console.log('body:', body);
        res.json(body);
    });
});

app.listen(3000);
console.log('Server is up and running');

在客户端使用 ajax 请求到您的服务器以获取正文,如下所示:

return $.getJSON('http://localhost:3000/api/forecast')
      .then(function(data) {
        this.setState({ forecast: data.results });
      });

希望对你有帮助!

【讨论】:

  • 这似乎是我正在寻找的东西。我会试试看:)谢谢!
  • jQuery 似乎并不高兴:GET localhost:3000/api/forecast net::ERR_CONNECTION_REFUSED jquery.min.js:4
  • @c-poulsen 嘿,你想试试 Axios 库吗?它支持 Promise,您可以在客户端和服务器端使用它。我用 Axios npmjs.com/package/axios 替换了我所有的 request 库方法
  • 客户端出现错误。来自服务器的 API 调用返回数据,但是当我调用我自己的服务器时,我得到了上面的错误。不过我可以在客户端尝试 axios
  • 或者我也可以尝试使用正确的端口调用服务器:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 2020-12-01
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多