node.js - 从 Node.JS 服务器应用程序中发出 GET 请求并将其发送到 React.JS 客户端

标签 node.js reactjs get request koa

所以我有一个 Koa/Node JS 简单后端,它的设计目的只是向外部 API 发出 GET 请求,然后将响应正文传递给我正在构建的 React JS 客户端应用程序。我是 Koa 或任何 Node JS 或服务器的新手,所以无法真正弄清楚如何操作。

类似这样的:

var koa = require('koa');  
var app = koa();

app.use(function *(){ 
    http.get({host: somehost, path: somepath},
        function(response) {
            this.body = Here send to React Client
        }
    )
});

app.listen(3000);  

编辑:也欢迎使用 ExpressJS 提供答案。

最佳答案

如果您只是希望将响应从远程服务不加更改地传输到客户端,则可以将响应直接通过管道传输到客户端。

'use strict'
const express = require('express');
const http = require('http');
const app = express();

app.use("/test", (clientRequest, clientResponse) => {
  http.get('http://some-remote-service.com', (remoteResponse) => {
    // include content type from remote service in response to client
    clientResponse.set('Content-Type', remoteResponse.headers['content-type']);

    // pipe response body from remote service to client
    remoteResponse.pipe(clientResponse);
  });
});

app.listen(3000,() => console.log('server started'));

在此场景中,管道的一个好处是客户端不必等待 Node.js 服务器在响应客户端之前接收来自远程服务的完整响应 - 客户端开始接收远程服务响应正文一旦远程服务开始发送它。

关于node.js - 从 Node.JS 服务器应用程序中发出 GET 请求并将其发送到 React.JS 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36113616/

相关文章:

javascript - 从 jQuery.get() 内部调用对象方法

javascript - 如何用JavaScript获取远程页面的内容?

node.js - Socket.IO 在 Google Chrome 43.0.2357.65 上停止工作

node.js - 找不到模块 'babel-runtime/core-js/object/entries'

javascript - Onclick 处理程序不适用于多个图像轮播

reactjs - 从 componentDidMount() 调用 Typescript Apollo 查询

android - 追加问号到url改造android

javascript - Node.js 指示超出文件末尾的意外标记

javascript - 为什么 ref.getCollections() 不被识别为函数?

javascript - "state"是React中的保留字吗?