Request: рдкрд╣рд▓рд╛ рддрд░реНрдХ рдмрдлрд╝рд░ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдирд╡ре░ 2015  ┬╖  25рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: request/request

рдирдорд╕реНрддреЗ, рдореИрдВ рдХреБрдЫ рдХреЛрдб рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛ рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛:

_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: {} рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рд╢рд░реАрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп json: {} рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рд╕рднреА 25 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╣рд╛рдВ рд╕рд░рдгреА рдХреА рд╢реВрдиреНрдп-рд▓рдВрдмрд╛рдИ рдереА, рддреЛ рдпрд╣ рдЕрдЪрд╛рдирдХ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд░рд╣рд╛ рдерд╛ред рд╢рд╛рдпрдж рд╡рд╣рд╛рдВ рдПрдХ рд╕рддреНрдпрд╛рдкрди рдмрдЧ рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛, рдПрдХ рддрд░рдл рдпрд╛ рджреВрд╕рд░рд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mlegenhausen picture mlegenhausen  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

svlungade picture svlungade  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Aranir picture Aranir  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

matrosov-nikita picture matrosov-nikita  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

codecowboy picture codecowboy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ