我想要做的是,当服务器收到请求时,使用“请求”模块发出请求,并将该“请求”的内容返回给客户端。可能吗?
const http = require("http");
const request = require("request");
const URL = "???";
const server = http.createServer();
server.on('request', (req, res) => {
// called once for every HTTP request
out_res = res;
make_request((err, res, body) => {
out_res.writeHead(200, {res});
out_res.write(body);
out_res.end();
});
});
function make_request(callback) {
request(URL, (err, res, body) => {
callback(err, res, body);
});
}
module.exports = () => {
server.listen(8080);
console.log('server start');
};
我遇到错误:ERR_STREAM_WRITE_AFTER_END
,我已经很长时间没有使用node.js了,但是我的 friend 向我询问了一些代码,我只是按照上面的方式重写了。
最佳答案
当然可以
server.on('request', (req, res) => {
request({uri: URL}).pipe(res);
});
只需将 API 调用的响应通过管道传送到路由器响应对象即可。
以下是我建议您编写服务器代码的方式
var server = http.createServer(function(req,res){
if(req.url === '/' || req.url === '/index'){
request({uri: URL}).pipe(res);
}
.... //other conditions
});
server.listen(3000,'127.0.0.1')
此外,您可以/应该考虑使用 express
,它真的很酷并且易于使用来定义路线等
关于node.js - Node : Is it possible that http server on request return the content from a request module?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50416470/