触发 GET 请求并获取节点 Stream
Fire a GET request and get the node Stream
我正在尝试以 formData
的形式发送来自我使用 request
获得的图像的流
问题是请求在 formData
请求之后触发。
有什么办法可以通过管道识别图像请求吗?但是可以自由地向 formData
?
添加参数
例如:
var req = request({
method: 'POST',
url: 'http://www.foo.bar/api/v1/tag/recognize',
formData: {
image_file: request('http://visual-recognition-demo.mybluemix.net/images/horses.jpg'),
param2: 'value2'
},
json: true,
});
如何开火:
request('http://visual-recognition-demo.mybluemix.net/images/horses.jpg')
因此可以在 req
中使用响应
更新:
中似乎缺少 Content-Length
header
http://visual-recognition-demo.mybluemix.net/images/horses.jpg 回应
而你只会得到 Transfer-Encoding: chunked
更多详情here
查看文档this part。你所描述的基本上是这个块
request.get('http://google.com/img.png').pipe(request.put('some_url'));
注意文档
When doing so, content-type and content-length are preserved in the
PUT headers.
另请注意,如果您未指定回调,请求将始终 return 一个流。如果您确实提供了回调,它会尝试将响应转换为字符串。使用 encoding:null
使其达到 return 原始字节。
示例 -
request({
url: 'some_url', //your image
encoding: null //returns resp.body as bytes
}, callback..)
要将调用链接在一起(运行 一个接一个),您可以嵌套回调或使用承诺。例如在另一个请求完成后 运行 一个请求 -
var request = require('request');
//1st
request('first_url', function (error, response, body) {
if (!error && response.statusCode == 200) {
//2nd
request('other_url', function (error, response, body) {
//process resp
});
}
});
或者更好的是,将请求回调代码转换为 Promises。 See a promise library like Bluebird 关于如何做到这一点。
这里有一个 bluebird 的例子(使用 then 以迭代方式工作)
var Promise = require("bluebird");
Promise.promisifyAll(require("request"));
request.getAsync('some_url').then(function(resp) {
request.getAsync('some_other_url').then(..processing code..);
});
我正在尝试以 formData
的形式发送来自我使用 request
问题是请求在 formData
请求之后触发。
有什么办法可以通过管道识别图像请求吗?但是可以自由地向 formData
?
例如:
var req = request({
method: 'POST',
url: 'http://www.foo.bar/api/v1/tag/recognize',
formData: {
image_file: request('http://visual-recognition-demo.mybluemix.net/images/horses.jpg'),
param2: 'value2'
},
json: true,
});
如何开火:
request('http://visual-recognition-demo.mybluemix.net/images/horses.jpg')
因此可以在 req
更新:
中似乎缺少 Content-Length
header
http://visual-recognition-demo.mybluemix.net/images/horses.jpg 回应
而你只会得到 Transfer-Encoding: chunked
更多详情here
查看文档this part。你所描述的基本上是这个块
request.get('http://google.com/img.png').pipe(request.put('some_url'));
注意文档
When doing so, content-type and content-length are preserved in the PUT headers.
另请注意,如果您未指定回调,请求将始终 return 一个流。如果您确实提供了回调,它会尝试将响应转换为字符串。使用 encoding:null
使其达到 return 原始字节。
示例 -
request({
url: 'some_url', //your image
encoding: null //returns resp.body as bytes
}, callback..)
要将调用链接在一起(运行 一个接一个),您可以嵌套回调或使用承诺。例如在另一个请求完成后 运行 一个请求 -
var request = require('request');
//1st
request('first_url', function (error, response, body) {
if (!error && response.statusCode == 200) {
//2nd
request('other_url', function (error, response, body) {
//process resp
});
}
});
或者更好的是,将请求回调代码转换为 Promises。 See a promise library like Bluebird 关于如何做到这一点。
这里有一个 bluebird 的例子(使用 then 以迭代方式工作)
var Promise = require("bluebird");
Promise.promisifyAll(require("request"));
request.getAsync('some_url').then(function(resp) {
request.getAsync('some_other_url').then(..processing code..);
});