好的,我正在尝试使用请求模块向API端点发出两个或更多请求.我正在渲染一个HTML文件,并使用以下代码将返回的JSON传递给把手模板:
res.render('list.html', {
title: 'List',
data: returnedJSON
}
Run Code Online (Sandbox Code Playgroud)
然后我可以很容易地在我的把手模板中迭代这个JSON.
我遇到的问题是,我现在需要使用多个数据源,其中类别列表将根据JSON响应类别和员工JSON响应中的Staff列表构建.我想要一个简单的解决方案,我可以做到这一点,但扩展它使用任意数量的数据源.
下面是我对一个数据源的完整代码片段:
request({
url: 'https://api.com/categories',
headers: {
'Bearer': 'sampleapitoken'
}
}, function(error, response, body) {
if(error || response.statusCode !== 200) {
// handle error
} else {
var json = JSON.parse(body);
res.render('list.html', {
title: 'Listing',
data: json
});
}
});
Run Code Online (Sandbox Code Playgroud)
这适用于一个端点,但如前所述,我现在需要使用多个请求并拥有多个数据源,例如:
request({
url: ['https://api.com/categories','https://api.com/staff'],
headers: {
'Bearer': 'sampleapitoken'
}
}, function(error, response, body1, body2) {
if(error || response.statusCode !== 200) {
// handle error
} else {
var json1 = JSON.parse(body1); …Run Code Online (Sandbox Code Playgroud) 我一直在使用业力+ requestjs + mocha + chai和sinon.我一直在使用chai-http模块但收到chai.request不是一个函数.请指出我在哪里弄错了我google了很多没有运气呢.
(function() {
var specFiles = null;
var baseUrl = '';
var requirejsCallback = null;
if (typeof window != 'undefined' && window.__karma__ != undefined) {
baseUrl = '/base';
requirejsCallback = window.__karma__.start;
specFiles = [];
for (var file in window.__karma__.files) {
if (window.__karma__.files.hasOwnProperty(file)) {
if (/.*\/js\/spec\/.+_spec\.js$/.test(file)) {
specFiles.push(file);
}
}
}
}
requirejs.config({
baseUrl: baseUrl,
paths: {
'chai': './node_modules/chai/chai',
'sinon': './node_modules/sinon/pkg/sinon',
'chaihttp': './node_modules/chai-http/dist/chai-http',
},
deps: specFiles,
callback: requirejsCallback
});
})();
**Spect-Test.js**
define(['chai', 'sinon', 'chaihttp'], function (chai, …Run Code Online (Sandbox Code Playgroud) 我的快递服务器接收来自浏览器的文件上传。上传作为multipart/form-data请求传输;我使用多方来解析传入的实体主体。
Multiparty 允许您将一部分(粗略地说,单个表单字段,如<input type="file">)作为可读流。我不想在我的 Web 服务器上处理或存储上传的文件,所以我只是将上传的文件部分通过管道传输到另一个服务的请求中(使用请求模块)。
app.post('/upload', function(req, res) {
var form = new multiparty.Form();
form.on('part', function(part) {
var serviceRequest = request({
method: 'POST',
url: 'http://other-service/process-file',
headers: {
'Content-Type': 'application/octet-stream'
}
}, function(err, svcres, body) {
// handle response
});
part.pipe(serviceRequest);
});
form.parse(req);
});
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下都能正常工作。node 自动应用分块传输编码,当浏览器上传文件字节时,它们作为原始实体主体(没有多部分格式)正确发送到后端服务,最终获取完整文件并成功返回。
但是,有时请求会失败并且我的回调会被调用err:
TypeError: The header content contains invalid characters
at ClientRequest.OutgoingMessage.setHeader (_http_outgoing.js:360:11)
at new ClientRequest (_http_client.js:85:14)
at Object.exports.request (http.js:31:10)
at Object.exports.request (https.js:199:15)
at Request.start (/app/node_modules/request/request.js:744:32) …Run Code Online (Sandbox Code Playgroud) 我是node.js(和request.js)的新手.我想从不同的路径特定URL获得一个网站的机身背部(在下面的例子中http://www.example.com/path1,http://www.example.com/path2等. )并使用键/值映射(下面的siteData [path])将此数据记录在对象中.
var request = require('request'),
paths = ['path1','path2','path3'],
siteData = {},
pathLength = paths.length,
pathIndex = 0;
paths.forEach((path) => {
var url="http://www.example.com/"+path;
request(url, function(error, response, html){
if(!error){
siteData[path] = response.body;
pathIndex++;
if(pathIndex===pathLength){
someFunction(siteData);
}
}
});
function someFunction(data){
//manipulate data
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
(node) warning: possible EventEmitter memory leak detected. 11 unpipe listeners added. Use emitter.setMaxListeners() to increase limit.我尝试链接,request(url, function(...){}).setMaxListeners(100);但这不起作用.谢谢你的帮助!
我正在学习Nodejs,并尝试使用node.js进行网络报废
我正在使用节点模块request和cheerio
但是当我请求url时,它会返回一些符号而不是html正文
var request = require('request');
var cheerio = require('cheerio');
request({
url:"http://mangafox.me/manga/shingeki_no_kyojin/v00/c000/1.html"
},(err, res, body) => {
if(err) throw err;
else {
var $ = cheerio.load(body);
console.log(body);
}
});
Run Code Online (Sandbox Code Playgroud)
在命令提示符下输出
谁能告诉我这里有什么问题?
谢谢
requestjs ×5
node.js ×4
javascript ×3
express ×2
asynchronous ×1
chai ×1
cheerio ×1
foreach ×1
json ×1
karma-runner ×1
mocha.js ×1
multiparty ×1
npm ×1