рдирдорд╕реНрддреЗ, рдореИрдВ рдХреБрдЫ рдХреЛрдб рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛ рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛:
_http_outgoing.js:441
throw new TypeError('first argument must be a string or Buffer');
^
TypeError: first argument must be a string or Buffer
at ClientRequest.OutgoingMessage.write (_http_outgoing.js:441:11)
at Request.write (/Users/tomasnovella/workspace/kitt/kitt-chrome-sync/node_modules/request/request.js:1392:25)
at end (/Users/tomasnovella/workspace/kitt/kitt-chrome-sync/node_modules/request/request.js:550:16)
at Immediate._onImmediate (/Users/tomasnovella/workspace/kitt/kitt-chrome-sync/node_modules/request/request.js:578:7)
at processImmediate [as _immediateCallback] (timers.js:383:17)
рдордЬреЗрджрд╛рд░ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЕрдиреБрд░реЛрдз рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреБрд░рд╛рдиреЗ (### v2.60.0 (2015/07/21) рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рдЪреЗрдВрдЬрд▓реЙрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░), рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдпрд╣ рд╣реИ:
request.post({
url: '<someURL>',
qs: {
'client': 'Google+Chrome',
'client_id': config.clientId
},
headers: {
'Content-Type': 'application/octet-stream',
'Authorization': 'Bearer '+ accessToken
},
encoding: null, // if you expect binary data
responseType: 'buffer',
body: body
}, (error, response, body) => {..blah...});
body
рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ responseType
рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдпрд╣ рд╣реИ: body = new Uint8Array(request.toArrayBuffer())
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдЯрд╛рдЗрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ), рд╣реИ рдирд╛?
рддреЛ, рдореВрд▓ рд░реВрдк рд╕реЗ рд╢рд░реАрд░ рдпрд╛ рддреЛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП String
рдпрд╛ Buffer
, рдЗрди рдирдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред
рдареАрдХ рд╣реИ, рдЕрдм рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рдирдП рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде _per se_ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА (рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рдФрд░ рдЬреЛ рднреА рдмрдлрд░ рд╕реЗ рдЗрд╕рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ),
рдХреЗрд╡рд▓ рдХреБрдЫ if-condition рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдХреБрдЫ рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ рдорд┐рд▓реЗ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдирд┐рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдореБрдЭреЗ рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИ:
https://www.npmjs.com/package/uint8
рддреНрд░реБрдЯрд┐ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдирд╣реАрдВ, рдХреЛрд░ рд╕реЗ рдлреЗрдВрдХреА рдЧрдИ рд╣реИред рдпрд╣ рд╕рдВрднрд╡рддрдГ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрдкрдЧреНрд░реЗрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ - рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдирд╛ NodeJS рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рд╛рд▓рдд? рдЕрдм рддрдХ рдХреНрдпрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛?
рдирд╣реАрдВ, рдпрд╣ рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрддреА рд╣реИ, рдЬрдм рдореИрдВ рдЗрд╕реЗ рдиреЛрдб. рдпрд╣ рддрдм рддрдХ рдирд╣реАрдВ рд╣реБрдЖ рдЬрдм рддрдХ рдореИрдВрдиреЗ npm (рдХрд▓) рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдФрд░ рдлрд┐рд░ рдЬрдм рдореИрдВрдиреЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд╕рд╛рде node_modules/рдЕрдиреБрд░реЛрдз рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рддрдм рдпрд╣ рдХрд╛рдлреА рдЕрдЬреАрдм рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдиреЛрдб рдХреЛрд░ рд╕реЗ рд╣реА рдлреЗрдВрдХреА рдЬрд╛рддреА рд╣реИред
рдЕрдЬреАрдм рдЗрдбрд┐рдпрдЯ рд╣реИред рдореБрдЭреЗ рдкрд┐рдЫрд▓реЗ рдкреАрдЖрд░ рдореЗрдВ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрджрд┐рдЧреНрдз рдорд┐рд▓реЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрдЧ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ _exact_ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рдЫреЛрдЯрд╛ рд╕реНрд╡рдпрдВ рдирд┐рд╣рд┐рдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдЬрд┐рд╕реЗ рдореИрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВред
рдЗрд╕ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?
var request = require('request');
request.post({
url: 'https://clients4.google.com/chrome-sync/command',
qs: {
'client': 'Google+Chrome',
'client_id': '12345'
},
headers: {
'Content-Type': 'application/octet-stream',
'Authorization': 'Bearer 123'
},
encoding: null, // if you expect binary data
responseType: 'buffer',
body: new Uint8Array(3)
}, function(e,r,b){console.log(e,r,b)});
рдпрд╣рд╛рдВ рдлрд┐рдХреНрд╕реНрдб #1905
рд╕реБрдкрд░, рдзрдиреНрдпрд╡рд╛рдж! :)
рд╣реЗ рд▓реЛрдЧреЛрдВ,
рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг 2.70.0 рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЗрд╕реА рддреНрд░реБрдЯрд┐ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реВрдВ:
TypeError: first argument must be a string or Buffer
at ServerResponse.OutgoingMessage.end (_http_outgoing.js:524:11)
at /Users/urbanmarovt/Documents/Faks/BCH/Diploma/PoC/gateway/routes/index.js:87:17
at Request._callback (/Users/urbanmarovt/Documents/Faks/BCH/Diploma/PoC/gateway/routes/proxy.js:81:7)
at Request.self.callback (/Users/urbanmarovt/Documents/Faks/BCH/Diploma/PoC/gateway/node_modules/request/request.js:200:22)
рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
var options = {
url: url,
path: req.path,
qs: req.query,
method: req.method,
headers: headers,
responseType: 'buffer',
timeout: TIMEOUT
};
options.json = true;
options.body = {
"firstName": "Test1",
"lastName": "Test2",
"email": "[email protected]",
"mobilePhone": "+38631288288"
};
request(options, function (error, response, body) {
callback(error, response, body, options);
});
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдХреЛрдб рдФрд░ рдкреНрд░рд╢реНрди рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред
рдпрд╣ рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓реАред
@novellizator рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?
@banomaster @Ohar body
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП String
рдпрд╛ Buffer
@рд╕рд┐рдореЛрд╡ рдУрд╣ рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВрдиреЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛
res.write(data);
res.end();
рдпрд╣ JSON рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ (# 1904) рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ рдорд┐рд▓рддреА рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП res.json()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ JSON рд╕реЗ рдмрдЪ рдирд┐рдХрд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ JSON рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдореИрдВ res.json
рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдмрдЪ рдирд┐рдХрд▓рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
function foo (req, res) {
request.post(
'https://example.com/api',
{form: data},
function (error, response, body) {
res.json(body);
}
);
}
"{\"response\":{\"data\":{}},\"status\":0}"
{
"response": {
"data": {}
},
"status": 0
}
json
рд╡рд┐рдХрд▓реНрдк рдХреЛ true
рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рдбреЙрдХреНрд╕ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрднрд╛рдЧ рдкрд░ рднреА рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред
рдЖрдкрдХрд╛ рдЕрдВрддрд┐рдо рдкреНрд░рд╢реНрди рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рдкреНрд░рд╢реНрди рд╣реИрдВ рддреЛ рдПрдХ рдирдпрд╛ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред
рд╡рд╛рд╣, рдмреНрд░рд╛рд╡реЛ рдЕрдиреБрд░реЛрдз рдЯреАрдо, рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдП рдмрд┐рдирд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рддрд░реАрдХрд╛: /
@mboudreau рдХреНрдпрд╛ рдЖрдк рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдореИрдВ 2.64.x рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдХрд┐рдпрд╛ рд╣реИ
рд╢рд░реАрд░ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬреЛ рдЕрдиреБрд░реЛрдз рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛,
рд▓реЗрдХрд┐рди рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ, рдЕрдм рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ
рдореЗрд░реЗ рдХрдИ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрдм рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╛рдордиреЗ рдЖрдпрд╛
рдПрдХ рдмрд╣реБрдд рд╣реА рдЧреБрдкреНрдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рдеред
рдореИрдВ рдирд╛рд░рд╛рдЬрд╝ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ рд╕реНрдЯреИрдВрдбрд░реНрдб рдХреЗ рдХрд╛рд░рдг рд╣реИ
рдХрд┐ рдЬрдм рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд░реВрд░рдд рд╣реИ
рд╡реГрджреНрдзрд┐ рдХреА рдЬрд╛рдПред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдзрд╛рдЧреЗ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдирд╡реАрдирддрдо рдлреАрдЪрд░ рд╕рдВрд╕реНрдХрд░рдг
рдмрд╣реБрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреВрдЯ рдЧрдпрд╛ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛ рдФрд░ рдмрд░реНрдмрд╛рджреА рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛
рд╕рдордп рдпрд╛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рдЕрдкрдиреЗ рдЯрд┐рдХрдЯ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реИ
рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдХрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╢реБрдХреНрд░, реиреп рдЕрдкреНрд░реИрд▓ реирежрезрем рдХреЛ рд╢рд╛рдо рел:реирео рдмрдЬреЗ рд╕рд┐рдореЛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
@mboudreau https://github.com/mboudreau рдХреНрдпрд╛ рдЖрдк рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ
рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/request/request/issues/1904#issuecomment -215646824
рдореБрдЭреЗ рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ body
рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдФрд░ рдПрдХ рдХрдбрд╝реЗ JSON рдпрд╛ рдПрдХ рдХреНрд╡реЗрд░реАрд╕реНрдЯреНрд░рд┐рдВрдЧ рдмреЙрдбреА рднреЗрдЬрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдЖрдкрдХреЛ рдмрдЧ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЙрдХреНрд╕ рд╕реЗ:
body
- PATCH, POST рдФрд░ PUT рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд╛рдп рдирд┐рдХрд╛рдпред рдПрдХ рдмрдлрд░, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рд░реАрдбрд╕реНрдЯреНрд░реАрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЬреЗрд╕рди рд╕рддреНрдп рд╣реИ, рддреЛ рд╢рд░реАрд░ рдПрдХ JSON-serializable рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдк рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
request({
method: 'POST',
url: 'http://requestb.in/tr4jaxtr',
body: {a: 1},
json: true,
callback: (err, res, body) => {
if (err) {
console.log(err)
}
console.log(body)
}
})
рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ рдпрд╣рд╛рдБ ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╢рд░реАрд░ рдПрдХ рдХрдбрд╝реЗ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред
рд╣реЗ рд╕рдм рд▓реЛрдЧ, рдореИрдВ рдХреБрдЫ рд╕рдордп рд╕реЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЬреВрдЭ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрд╣рд╛рдВ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИред рдЬрдм рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ: {form: {key: 1}}
рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреЛрд╕реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдпрд╣ рдХреБрдЫ рдФрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ {body: {key: 1}}
рдХрд╣реЗрдВ рдпрд╣ new TypeError('first argument must be a string or Buffer');
рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред
рдЗрд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрднреА {body: JSON.stringify({key: 1})}
рдФрд░ рдЕрдиреБрд░реЛрдз рд╕рдлрд▓ рд╣реБрдЖред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рд╕реНрд░реЛрдд рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рд╛рде рд╣реА, рдЕрдЧрд░ рд╣рдо рд╡рд┐рдХрд▓реНрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ json: true
рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИред
рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ body: {}
рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рд╢рд░реАрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп json: {}
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдХрднреА-рдХрднреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдЙрддреНрддрд░ рдзрд╛рдЧреЗ рдХреЗ рдмрд╣реБрдд рдиреАрдЪреЗ рд╣реЛрддреЗ рд╣реИрдВред рдзрдиреНрдпрд╡рд╛рдж @itsyogesh @cozzbie
@novellizator рджреЛрд╕реНрддреЛрдВ рдпрд╣ рдПрдХ рдмрдВрдж рдореБрджреНрджрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд░реЗрд╢рд╛рди рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рдмрд╛рдЗрдирд░реА рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ:
app.post(self._options.baseUrl + '/image.post', function (req, res) {
delete req.headers.host;
var headers= req.headers;
headers['Content-Type'] = 'application/octet-stream';
request.post('http://localhost:9080/image.post',
{
headers: headers,
encoding: null, // if you expect binary data
responseType: 'buffer',
body: req.body
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
res.send(body);
res.end();
} else {
res.send({ error: new Error('image error') });
res.end();
}
})
})
рдЕрд░реЗ, рдмрд╕ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдВред рдореИрдВ рдПрдХ json body
рднреЗрдЬ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕реЗ body: JSON.stringify(body)
рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдереА
рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдЕрдкрдиреЗ рд╢рд░реАрд░ рдХреЗ рд░реВрдк рдореЗрдВ Uint8Array
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╣рд╛рдВ рд╕рд░рдгреА рдХреА рд╢реВрдиреНрдп-рд▓рдВрдмрд╛рдИ рдереА, рддреЛ рдпрд╣ рдЕрдЪрд╛рдирдХ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд░рд╣рд╛ рдерд╛ред рд╢рд╛рдпрдж рд╡рд╣рд╛рдВ рдПрдХ рд╕рддреНрдпрд╛рдкрди рдмрдЧ рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛, рдПрдХ рддрд░рдл рдпрд╛ рджреВрд╕рд░рд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ
body: {}
рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рд╢рд░реАрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдпjson: {}
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ