节点:是否有可能 http 服务器根据请求 return 来自请求模块的内容?
Node: Is it possible that http server on request return the content from a request module?
我想做的是当服务器收到请求时使用"request"模块发出请求,然后return将"request"的内容返回给客户端。可能吗?
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,朋友问我一些代码,我就按上面的方式重写了。
当然可以
server.on('request', (req, res) => {
request({uri: URL}).pipe(res);
});
只是 pipe
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')
此外,您 can/should 考虑使用 express
,定义路由等非常酷且易于使用
我想做的是当服务器收到请求时使用"request"模块发出请求,然后return将"request"的内容返回给客户端。可能吗?
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,朋友问我一些代码,我就按上面的方式重写了。
当然可以
server.on('request', (req, res) => {
request({uri: URL}).pipe(res);
});
只是 pipe
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')
此外,您 can/should 考虑使用 express
,定义路由等非常酷且易于使用