Request: ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋Š” Buffer ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 11์›” 16์ผ  ยท  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), changelog์— ๋”ฐ๋ฆ„)์œผ๋กœ ๊ต์ฒดํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  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())
๋‚˜๋Š” resopnseType์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ (์ž‘๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—) ์ค‘์š”ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ?

๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณธ๋ฌธ์€ String ๋˜๋Š” Buffer ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ์œ ํ˜•์— ๋Œ€ํ•ด์„œ๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ธ€์Ž„์š”, ์ง€๊ธˆ๊นŒ์ง€๋Š” ์ž‘๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ƒˆ๋กœ์šด ๋‚ด์žฅ ์œ ํ˜•์„ ๋ณด๋‚ด๋Š” ๋ฐ _๊ทธ ์ž์ฒด๋กœ_ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๋ถˆํ•„์š”ํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ผ๋ถ€ if ์กฐ๊ฑด๋งŒ ์ธ์œ„์ ์œผ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ํ•ซํ”ฝ์Šค๋ฅผ ์ฐพ์•˜์ง€๋งŒ ๋‹ค์†Œ ๋ถˆํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.
https://www.npmjs.com/package/uint8

์ด ๋ชจ๋“ˆ์ด ์•„๋‹Œ ์ฝ”์–ด์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. NodeJS ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ๊ฒฝ์šฐ ํ”Œ๋žซํผ ์—…๊ทธ๋ ˆ์ด๋“œ์™€ ๊ด€๋ จ์ด ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์กฐ๊ฑด์ด๋ผ๋ฉด? ์ง€๊ธˆ๊นŒ์ง€ ๋ฌด์—‡์ด ์ž‘๋™ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ์ด ์˜ค๋ฅ˜๋Š” ๋…ธ๋“œ์—์„œ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. npm(์–ด์ œ)์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ๊นŒ์ง€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ node_modules/request๋ฅผ ์ด์ „ ๊ฒƒ์œผ๋กœ ๋ฎ์–ด์ผ์„ ๋•Œ ๋‹ค์‹œ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ๋…ธ๋“œ ์ฝ”์–ด ์ž์ฒด์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด์ƒํ•œ ์•„์ด๋””์ž…๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ PR์—์„œ ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ์šฉ์˜์ž๋ฅผ ์ฐพ์•˜์ง€๋งŒ ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๋ฉด _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);
    });

๋‚ด ์ฝ”๋“œ์™€ ์งˆ๋ฌธ์ด ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ์˜ค๋ฅ˜๋„ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

@novelizator ๋‹ค์‹œ ์—ด์–ด

@banomaster @Ohar body ๋Š” String ๋˜๋Š” Buffer ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@simov ์˜ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ์‚ฌ์šฉํ–ˆ๋‹ค

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๋ถ€ํ„ฐ request๋ฅผ ์‚ฌ์šฉํ•ด ์™”์œผ๋ฉฐ ํ•ญ์ƒ
์š”์ฒญ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ง๋ ฌํ™”๋œ ๋ณธ๋ฌธ์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ตœ์‹  ๋ฒ„์ „ ์ดํ›„๋กœ๋Š” ๋” ์ด์ƒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ
์ƒˆ ๋ฒ„์ „์ด ๋‚˜์™”์„ ๋•Œ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๋นŒ๋“œ๋ฅผ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.
๋งค์šฐ ๋น„๋ฐ€์Šค๋Ÿฌ์šด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜.

๋‚ด๊ฐ€ ์งœ์ฆ๋‚˜๋Š” ์ด์œ ๋Š” ์˜๋ฏธ ๋ก ์  ๋ฒ„์ „ ๊ด€๋ฆฌ ํ‘œ์ค€ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋ธŒ๋ ˆ์ดํ‚น ์ฒด์ธ์ง€(Breaking Change)๊ฐ€ ๋„์ž…๋  ๋•Œ ๋ฉ”์ด์ € ๋ฒ„์ „์€
์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ตœ์‹  ๊ธฐ๋Šฅ ๋ฒ„์ „์€
๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ํŒŒ์‚ฐํ–ˆ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜์—๊ฒŒ ๋งŽ์€ ์ขŒ์ ˆ๊ณผ ๋‚ญ๋น„๋ฅผ ์ดˆ๋ž˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ์˜ค๋ฅ˜๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ž์ฒด ํ‹ฐ์ผ“์„๋ฐ›์„ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ ๋‹จ์ง€ ๊ฒฝ๊ณ 
๋ณ€๊ฒฝํ•˜๊ณ  ์˜๋ฏธ ์ฒด๊ณ„ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋”ฐ๋ฅด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

2016๋…„ 4์›” 29์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 5์‹œ 28๋ถ„์— simo [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

@mboudreau https://github.com/mboudreau ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡์ด ๋‹น์‹ ์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์—†๋Š”์ง€ ์ •ํ™•ํžˆ ์„ค๋ช…ํ•˜์„ธ์š”?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/request/request/issues/1904#issuecomment -215646824

๊ท€ํ•˜์˜ ๊ฒฝ์šฐ์— ์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™์ด ๋ฌด์—‡์ธ์ง€ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? body ์˜ต์…˜์— ๊ฐœ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ๋ฌธ์ž์—ดํ™”๋œ JSON ๋˜๋Š” ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๋ณธ๋ฌธ์„ ๋ณด๋‚ผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ?

์–ด๋Š ์ชฝ์ด๋“  ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ์—์„œ:

body - PATCH, POST ๋ฐ PUT ์š”์ฒญ์— ๋Œ€ํ•œ ์—”ํ„ฐํ‹ฐ ๋ณธ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฒ„ํผ, ๋ฌธ์ž์—ด ๋˜๋Š” ReadStream์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. json์ด true์ด๋ฉด body๋Š” JSON ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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)
  }
})

์—ฌ๊ธฐ ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐ

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์ €๋Š” ์ž ์‹œ ๋™์•ˆ ์ด ์˜ค๋ฅ˜๋ฅผ ๋งŒ์ง€์ž‘๊ฑฐ๋ฆฌ๋‹ค๊ฐ€ ์•Œ๊ฒŒ ๋œ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ๊ฒŒ์‹œ ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜ ์œ ํ˜•์ด {form: {key: 1}} ๊ฒฝ์šฐ ๊ฒŒ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ์ง๋ ฌํ™”ํ•˜์ง€๋งŒ, {body: {key: 1}} ๊ฒฝ์šฐ new TypeError('first argument must be a string or Buffer'); ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ๊ธˆ {body: JSON.stringify({key: 1})} ํ–ˆ๊ณ  ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„์ง ์†Œ์Šค๋ฅผ ์กฐ์‚ฌํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด๊ฒƒ์ด ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ options ๊ฐœ์ฒด์— 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์ธ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ๊ฐ‘์ž๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์–ด๋–ค ์‹์œผ๋กœ๋“  ์•ฝ๊ฐ„์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰