Express μμ²μμ νμ΄ννμ¬ μ μμ² κ°μ²΄λ₯Ό λ§λ€λ €κ³ ν©λλ€. μ΄κ²μ GET μμ²μ λν΄ μ μλνμ§λ§ λ³Έλ¬Έμ΄ μλ POST μμ²μ κ²½μ° λ³Έλ¬Έμ΄ μ μμ²μ 볡μ¬λμ§ μλ κ² κ°μ΅λλ€. λ€μκ³Ό κ°μ΄ μλμΌλ‘ λ³Έλ¬Έμ 볡μ¬ν΄ 보μμ΅λλ€.
let pipedReq = req.pipe(request({ url: 'http://www.example.com', form: req.body }));
μ΄κ²μ λ³Έλ¬Έ μμ 볡μ¬λμ§λ§ pipedReq
κ° μ 리λ λ "μ’
λ£ ν μ°κΈ°" μ€λ₯κ° λ°μν©λλ€. #1659μ κ΄λ ¨μ΄ μμ μ μμ΅λλ€.
λ€μκ³Ό κ°μ κ°λ¨ν Express μ±μΌλ‘ λ¬Έμ λ₯Ό μ¬ννλ κ²μ μ½μ΅λλ€.
'use strict';
let express = require('express');
let request = require('request');
let app = express();
app.use('/', (req, res) => {
req.pipe(request.post({ url: 'http://www.example.com', form: { foo: 'bar' }}));
});
app.listen(process.env.PORT || 3000);
μμΆμ :
Error: write after end
at ClientRequest.OutgoingMessage.write (_http_outgoing.js:413:15)
at Request.write (/.../node_modules/request/request.js:1354:25)
at end (/.../node_modules/request/request.js:548:16)
at Immediate._onImmediate (/.../node_modules/request/request.js:576:7)
at processImmediate [as _immediateCallback] (timers.js:358:17)
μ΄κ²μΌλ‘ μλνμμμ€:
var express = require('express')
var request = require('request')
var app = express()
// put it before any other middleware
app.use(function(req, res) {
req.pipe(
request[req.method.toLowerCase()]('http://example.com'))
.pipe(res)
})
app.listen(3000, function () {
console.log('Express server listening on port 3000')
})
λ³Έλ¬Έμ μμ νλ €λ κ²½μ° μ μμ²μ ꡬμ±νκ³ μλ΅μ νμ΄ννλ©΄ λ©λλ€.
@simov λ³Έλ¬Έμ μμ νμ§ μκ³ URLλ§ μμ ν©λλ€. λ°λΌμ μλ μμ²μ ν€λ λ° κΈ°ν μμ±μ μ μ§νμ§λ§ μ URLμ μ¬μ©νμ¬ μ μμ²μΌλ‘ νμ΄ννκ³ μΆμ΅λλ€. λ¬Έμ λ μλ³Έ μμ²μ΄ μ μμ²μΌλ‘ νμ΄νλ λ λ³Έλ¬Έμ΄ λ³΅μ¬λμ§ μκ³ (λ²κ·ΈμΈμ§ νμ€νμ§ μμ) form
μμ±μ μ§μ νμ¬ λ³Έλ¬Έμ 볡μ¬νλ €κ³ νλ©΄ request
μμ±μμμ μμμ μΈκΈν μ€λ₯κ° λ°μν©λλ€.
"μ μμ² κ΅¬μ±"μ΄λΌκ³ λ§νλ©΄ μνλ λ³Έλ¬ΈμΌλ‘ μ²μλΆν° μ μμ²μ λ§λ€κ³ νμ΄ννλ λμ μλ μμ²μ ν€λλ₯Ό μ§μ 볡μ¬νλ€λ μλ―Έμ λκΉ? κ·Έλ κ² ν μ μμ§λ§ κΈ°λ³Έ μ 곡 νμ΄ν μ§μμ μ¬μ©νμ¬ μ μμ²μμ μλ μμ²μ 볡μ¬ν μ μλ€λ©΄ λ λ°λ³΅μ μ΄κ³ μ·¨μ½ν κ²μ λλ€.
λλ μ¬μ ν μ΄ λ κ°μ§ λ¬Έμ μ€ νλ λλ λ λͺ¨λκ° λ²κ·ΈλΌκ³ μκ°ν©λλ€(μ¦, 1) νμ΄νν λ μμ² λ³Έλ¬Έμ΄ λ³΅μ¬λμ§ μκ³ 2) λ΄ originalak κ²μλ¬Όμ μΈκΈλ μμΈ).
λλ λͺ
μμ λλ μμ²μ λν΄ λ무 λ§μ΄ μμ§ λͺ»νμ§λ§(μλ λ°©μμ μ€μ λ‘ μ΄ν΄νμ§ μκ³ λ¨μΌ νμ΄μ§ μ± νλ‘μμ μ¬μ©νκΈ°λ§ νλ©΄ λ¨) write after end
μ€λ₯κ° μμ λμμ΅λλ€.
request.post({ url: 'http://www.example.com', form: { foo: 'bar' }}).pipe(res);
λμ μ:
req.pipe(request.post({ url: 'http://www.example.com', form: { foo: 'bar' }})).pipe(res);
@matthewgertner λ΄ μ½λ μμ λ₯Ό μλνλ©΄ μλν©λλ€.
@simov νμ€ν μλνμ§λ§ κ·νμ μλ req
μ 볡μ¬νλ €λ λ³Έλ¬Έμ΄ μλ κ²½μ°λ₯Ό λ€λ£¨μ§ μμ΅λλ€. μ€μ λ‘ κ·νμ μμ μ κ±°μ λμΌν μ½λλ₯Ό μ¬μ©νκ³ μμμ§λ§ λ³Έλ¬Έμ΄ μ μμ² κ°μ²΄μ 볡μ¬λμ§ μκΈ° λλ¬Έμ POST μμ²μ μ²λ¦¬ν΄μΌ ν λ λ§νμ΅λλ€.
@matthewgertner μλνμ§ μλ _exact_ μ½λ μμ λ₯Ό μ 곡ν μ μμ΅λκΉ?
@simov λ΄ μλ κ²μλ¬Όμ μνμ λλ€. μ΄κ²μ μ¬μ©νλ©΄ λ³Έλ¬Έμ΄ μ μ‘λμ§ μμ΅λλ€.
'use strict';
let express = require('express');
let request = require('request');
let app = express();
app.use('/', (req, res) => {
req.pipe(request.post('http://www.example.com'));
});
app.listen(process.env.PORT || 3000);
μ΄κ²μ μ¬μ©νλ©΄ μμΈκ° λ°μν©λλ€.
'use strict';
let express = require('express');
let request = require('request');
let app = express();
app.use('/', (req, res) => {
req.pipe(request.post({ url: 'http://www.example.com', form: { foo: 'bar' }}));
});
app.listen(process.env.PORT || 3000);
http://www.example.com
λ₯Ό http://requestb.in/ μμ μμ±λ URLλ‘ λ°κΎΈκ³ μ¬κΈ°μ λ§ν¬λ₯Ό λΆμ¬λ£μ μ μμ΅λκΉ? λ€μκ³Ό κ°μμΌ ν©λλ€. http://requestb.in/1mv5l8h1?inspect
λλ μμ μμ μ½λλ₯Ό μ¬μ©ν μλ μμ΅λλ€. μ΄κ²μ΄ μ κ° μλ²μ μ¬μ©νλ κ²μ΄κΈ° λλ¬Έμ λλ€. κ·Έλ° λ€μμ΄ μ€ν¬λ¦½νΈλ₯Ό μ€ννκ³ μμ΅λλ€.
var request = require('request')
request.post('http://localhost:3000', {form:{some:'data'}})
λ΄ λ§ν¬μμ λ³Ό μ μλ―μ΄ λλ form:{some:'data'}
보λμ΅λλ€.
λ΄ μ¬μ© μ¬λ‘λ₯Ό μ€λͺ νκ² μ΅λλ€. κ°λ¨ν μΉ API νλ‘μλ₯Ό ꡬννμ΅λλ€(https://github.com/salsita/web-api-proxy μ°Έμ‘°). HTTP μμ²μ μμ νκ³ λ€λ₯Έ νΈμ€νΈλ‘ 리λλ μ νμ¬ νμν κ²½μ° URL 맀κ°λ³μλ₯Ό νλ‘μ μλ²μ νκ²½ λ³μλ‘ κ΅μ²΄νκΈ°λ§ νλ©΄ λ©λλ€. μμ μ λΉλ° ν€λ₯Ό ν΄λΌμ΄μΈνΈ μ½λμ ν¬ν¨νμ§ μμλ λλ€λ κ²μ λλ€.
GET μμ²μλ μ μλνμ§λ§ μ΅κ·Όμλ POSTμλ μ¬μ©ν΄μΌ νλ€λ μꡬ μ¬νμ΄ μμμ΅λλ€. λ°λΌμ λ³Έλ¬Έμ΄ Express μμ²μ ν΅ν΄ λ€μ΄μ€κΈ° λλ¬Έμ μ΄μ μ견μμμ κ°μ΄ μμ² λ³Έλ¬Έμ μ΄κΈ°ννμ§ μμ΅λλ€. κ°μ₯ μ΅κ·Όμ μλ νμ€ν ν¨κ³Όκ° μμ§λ§ μ€μ λ‘ λμμ΄ λμ§λ μμ΅λλ€. λ΄κ°ν΄μΌ ν μΌμ λ€μκ³Ό κ°μ΅λλ€.
req.pipe(request.post('http://some/new/url'));
req
μ λ³Έλ¬Έμ΄ μμΌλ©΄ μ΄ κ²½μ° λ³΅μ¬λμ§ μλ κ² κ°μ΅λλ€. μ΄μ¨λ μ§μ€μ (νκ²½ λ³μλ₯Ό μ¬μ©νμ¬ κ΅μ²΄ν΄μΌ νλ μ리 νμμκ° μμ μ μμΌλ―λ‘) λ³Έλ¬Έμ μμ ν΄μΌ _do_ ν΄μΌ νλ―λ‘ λ€μμ μνν΄μΌ ν©λλ€.
req.pipe(request.post({ url: 'http://some/new/url', form: { some: 'form', data: 'here' }));
μ΄λ‘ μΈν΄ request
μ λ²κ·Έλ‘ μμ¬λλ μμΈκ° λ°μν©λλ€.
μ΄μ¨λ μμ ν μλ‘μ΄ request
κ°μ²΄λ₯Ό μ§μ λ§λ€ μλ μμ§λ§ λλ½λ κ²μ΄ μλμ§ νμΈνκ³ λ²κ·ΈμΈ κ²½μ° μ΄ λ¬Έμ λ₯Ό λ³΄κ³ νκ³ μΆμμ΅λλ€.
νμ GET
μμ²μ μ¬μ©νκ³ μκΈ° λλ¬Έμ μλνμ§ μμ΅λλ€. λ΄ μ½λ μμ λ₯Ό λ€μ μ΄ν΄λ³΄μμμ€.
request[req.method.toLowerCase()]('http://example.com'))
λ λ€μ΄μ€λ μμ²μ κΈ°λ°μΌλ‘ μμ² λ°©λ²μ μ€μ ν©λλ€.
κ·Έ μΈμλ λ΄ μ²« λ²μ§Έ μ견μμ λ€μ λ³Έλ¬Έμ μμ ν΄μΌ νλ κ²½μ°:
λ³Έλ¬Έμ μμ νλ €λ κ²½μ° μ μμ²μ ꡬμ±νκ³ μλ΅μ νμ΄ννλ©΄ λ©λλ€.
νμ GET μμ²μ μ¬μ©νκ³ μκΈ° λλ¬Έμ μλνμ§ μμ΅λλ€. λ΄ μ½λ μμ λ₯Ό λ€μ μ΄ν΄λ³΄μμμ€.
νμ§λ§ request.post
μμ΅λλ€. request['post']
μ λμΌν©λλ€.
λ³Έλ¬Έμ μμ νλ €λ κ²½μ° μ μμ²μ ꡬμ±νκ³ μλ΅μ νμ΄ννλ©΄ λ©λλ€.
μμ²μ μ μμ²(ν€λ λ³΅μ¬ λ±)μΌλ‘ νμ΄ννκΈ° μν΄ μ΄λ―Έ request
μ μλ μ½λλ₯Ό κΈ°λ³Έμ μΌλ‘ λ€μ μμ±ν΄μΌ νλ€λ κ²μ ν° λ¬Έμ μ
λλ€. λ΄κ° μ²λ¦¬ν΄μΌ νλ λ§μ κ·Ήλ¨μ μΈ κ²½μ°κ° μμ μ μμ΅λλ€. νμ§λ§ λ€, μ΄κ²μ΄ μ κ° ν μΌμ΄λΌκ³ μκ°ν©λλ€.
IMO μμΈκ° λ°μνμ§ μκ³ μμ λ³Έλ¬Έμ΄ μλ λ€λ₯Έ μμ²μΌλ‘ μμ²μ νμ΄νν μ μμ΄μΌ ν©λκΉ, μλλ©΄ μ΄ λμμ λν λͺ κ°μ§ μ΄μ κ° μλ€κ³ μκ°νμλκΉ?
μ΄κ²μ λͺ
μμ μΌλ‘ λ€λ₯Έ κ²μ μ§μ νμ§ μκΈ° λλ¬Έμ νμ GET
μμ²μ νλ κ²μ
λλ€.
μ κ°μ²΄μ ꡬμ±μ 본체λ₯Ό μμ νλ €λ κ²½μ° μλ§ μ μ©
λ¬Όλ‘ νμ¬ μ½λλ² μ΄μ€λ POSTλ₯Ό μ§μνμ§ μμ΅λλ€. λλ κ·Έκ²μ κ³ μΉλ €κ³ λ Έλ ₯νκ³ μλλ°, μ΄λ λ΄κ° μ¬κΈ°μ μ€λͺ λ λ¬Έμ μ λΆλͺμ³€μ΅λλ€. μ¬μ© μ¬λ‘λ₯Ό λ μ μ€λͺ νκΈ° μν΄ κΈ°μ‘΄ μ½λλ² μ΄μ€λ₯Ό μ°Έμ‘°νμ λΏμ λλ€.
λ°λλ νμ΄ν μμ
μΌλ‘ 볡μ¬λμ§ μκΈ° λλ¬Έμ λ°λλ₯Ό μμ νκ³ μΆμ§ μλλΌλ νμ μ κ°μ²΄λ₯Ό μμ±ν΄μΌ νλ€κ³ νμ ν©λλ€. λ΄κ° μ 곡ν μμ λ₯Ό μλ νμ΅λκΉ? request
κ°μ²΄λ‘ νμ΄ννλ λ³Έλ¬Έμ΄ μλ Express μμ²μ΄ νμν©λλ€. μ κ°μ²΄μμ λ³Έλ¬Έμ΄ undefined
μμ μ μ μμ΅λλ€.
GET
μμ²μλ λ³Έλ¬Έμ΄ μμ΅λλ€. μ΄λ μλλ κ²μ
λλ€.
μ΄κ²μ μλν©λλ€ (κ·νμ μ).
'use strict';
let express = require('express');
let request = require('request');
let app = express();
app.use('/', (req, res) => {
req.pipe(request.post('http://www.example.com'));
});
app.listen(process.env.PORT || 3000);
μ΄κ²μ μ¬μ©νμ¬ μμ²:
var request = require('request')
request.post('http://localhost:3000', {form:{some:'data'}})
some=data
μ(λ₯Ό) 보λμ΅λλ€.
μ κ°μ²΄μμ λ³Έλ¬Έμ΄ μ μλμ§ μμ κ²μ λ³Ό μ μμ΅λλ€.
κ·Έκ² μ΄λ¨μ΄, λ λ λ°λΌκ°μ§ μμ.
ν , μμμ΄. requestb.inμ μ¬μ©ν λ(μ’μ ν!) λ³Έλ¬Έμ΄ μ€μ λ‘ _보λ΄μ§_ κ²μ λ³Ό μ μμ΅λλ€. μ€μ λ‘ μ μ‘λμ§ μμλ€κ³ λ―Ώκ² λ§λ λ κ°μ§ λ¬Έμ κ° μμμ΅λλ€.
1) cURLμ μ¬μ©νμ¬ λ΄ μλ²μ μμ²μ λ³΄λΌ λ(μ΄μ μ£Όμμ μ½λλ₯Ό μ¬μ©νμ¬) μμ²μ λ³΄λΈ ν μ€λ¨λ©λλ€(μ¦, cURLμ΄ μ’
λ£λμ§ μμ).
2) request.body
보면 undefined
λ°λ©΄ request.post
λ₯Ό λͺ
μμ μΈ form
μμ±κ³Ό ν¨κ» μ¬μ©νμ¬ μμ²μ μμ±νλ κ²½μ°μλ κ·Έλ μ§ μμ΅λλ€.
λλ 2)λ κ΄λ ¨μ΄ μμΌλ©° μ체λ λ¨μν λ€λ₯Έ κ³³μ μ μ₯λμ΄ μλ€κ³ μκ°ν©λλ€. κ·Έλλ 1)μ μ¬ν ν μ μλμ§ μκ³ μΆμ΅λλ€. cURL( curl --data "some=data" localhost:3000
)μ ν΅ν΄ localhost:3000
μμ²μ 보λ΄λ©΄ μ’
λ£λκ±°λ μ€λ¨λ©λκΉ?
1) κ·νμ μμμ μ무 κ²λ λ°ννμ§ μκΈ° λλ¬Έμ μμ²μ΄ μ€λ¨λ©λλ€. λμΌν νμ΄μ§μ μλμ§ νμΈνκΈ° μν΄ μ¬μ©νμ΅λλ€. .pipe(res)
νλ©΄ μλ΅μ λ°μ μ μμ΅λλ€.
2) μ€νΈλ¦Ό APIλ₯Ό μ¬μ©ν λ request.body
λ undefined
μ€μ μμ μμ μ€μ λ‘ .pipe(res)
νκ³ μλνμ§ μλ κ²μ νμΈνμ΅λλ€. μμ²μ 보λ΄λ κ²μΌλ‘ λνλμ§ μκ³ μ€λ¨λ©λλ€. κ·νμ μκ° ν¨κ³Όκ° μκΈ° λλ¬Έμ λ¬Έμ μ μμΈμ λΉ λ₯΄κ² μ°Ύμμ΅λλ€.
app.use(bodyParser.urlencoded({ extended: true }));
body-parser
λ₯Ό μ¬μ©νλ©΄ λ°°κ΄μ΄ λ μ΄μ μλνμ§ μλ κ² κ°μ΅λλ€. λμνμλκΉ? κ·Έλ λ€λ©΄ μμΈμ΄ 무μμΈμ§ μμλκΉ?
λ€, μ 첫 λκΈμ λ€μ ν λ² μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°μ΅λλ€.
// λ€λ₯Έ λ―Έλ€μ¨μ΄λ³΄λ€ λ¨Όμ λ°°μΉ
body-parser
λ λ―Έλ€μ¨μ΄μ λ€μ΄κ°κΈ° μ μ μμ²μ μ²λ¦¬νμ§λ§ μ±κ³΅μ μΌλ‘ νμ΄ννλ €λ©΄ μμ μμ²μ΄ νμν©λλ€.
ν΄! μκ² μ΅λλ€. λμκ³Ό μΈλ΄μ¬μ κ°μ Έ μ£Όμ μ κ°μ¬ν©λλ€. κ·Έ λ°λ₯μ λλ¬νλ λ° μκ°μ΄ κ±Έλ Έμ΅λλ€. λλ μ¬μ ν λͺ¨λ ν€λμ 물건μ νμ΄ν ν λ€μ λ³Έλ¬Έμ μμ ν μ μλ€λ κ²μ΄ μΌμ’ μ λΆνμ΄λΌκ³ μκ°νμ§λ§ κ·Έ μ£Όμμ λ°©λ²μ΄ μλ€κ³ μκ°ν©λλ€.
@simov
app.use(function(req, res) {
req.pipe(
request[req.method.toLowerCase()]('http://example.com'))
.pipe(res)
})
DELETEμ μ€ν¨ν©λλ€. request.delμ req.deleteκ° μλ λ©μλμ΄κΈ° λλ¬Έμ
λλ μ΄κ²μ΄ μ€λλμλ€λ κ²μ μκ³ μμ§λ§ μ΄μ λν μ μ ν ν΄κ²°μ± μ μ°Ύλ λ° μ΄λ €μμ κ²ͺμκ³ λ€λ₯Έ μ¬λλ€μκ² μ μ©ν κ²μ΄λΌκ³ μκ°νμ΅λλ€.
'use strict';
let express = require('express');
let request = require('request');
let app = express();
app.use('/', (req, res) => {
req.pipe(request.post({ url: 'http://www.example.com', form: { foo: 'bar' }}), {end: false}).pipe(res);
});
app.listen(process.env.PORT || 3000);
https://nodejs.org/api/stream.html#stream_readable_pipe_destination_options μ νμλ λλ‘ μ΄λ₯Ό μΆκ°νλ©΄ reqκ° μ’ λ£λ λ μ μ€νΈλ¦Όμ΄ μλμΌλ‘ μ’ λ£λμ§ μλλ‘ ν©λλ€.
μ΄λ‘ μΈν΄ μ΄ μμ κ° μλνμ§λ§ μ΄λ₯Ό μ¬μ©νμ¬ λ€λ₯Έ λ©μλμ λν νλ‘μλ₯Ό λ§λλ λ° λͺ κ°μ§ λ¬Έμ κ° μμμ λ°κ²¬νμ΅λλ€. λͺΈμ²΄λ μ΄λ»κ² λ λͺ¨λ κ²μ μ λλ‘ λ«κ² νμ§λ§ λͺΈμ²΄κ° μμΌλ©΄ μ¬μ ν 맀λ¬λ € μμ΅λλ€. json λ°λ νμλ₯Ό μ¬μ©νλ κ²½μ° λ°λκ° μλ κ²½μ°μλ λ°λκ° {}
λ‘ μ½νκΈ° λλ¬Έμ λ¬Έμ κ° λ°μνμ§ μμ§λ§ λ°λκ° μμΌλ©΄ μ¬μ ν λ¬Έμ κ° μμ μ μμ΅λλ€. λ΄ νμ¬ μ루μ
μ μμ²μ λν μ½ν
μΈ κΈΈμ΄ ν€λλ₯Ό νμΈνκ³ μ΅μ
κ°μ²΄κ° μμΌλ©΄ μ¬μ©νλ κ²μ
λλ€.
@JeffreyAngell μ ν΄μλλ₯Ό μλνλ©΄ λ©λλ€. κ³ λ§μ
μ΄κ²μ λλ₯Ό μν΄ μλν©λλ€.
`router.put('/', ν¨μ(client_req, client_res, λ€μ) {
var json = JSON.stringify(client_req.body);
var μ΅μ
= createOptions('PUT', client_req.baseUrl, json);
var proxy = https.request(options, function (res) {
client_res.statusCode = res.statusCode;
res.pipe(client_res, {
end: true
});
});
client_req.pipe(proxy, {
end: true
});
proxy.write(json);
proxy.end();
});
ν¨μ createOptions(λ©μλ, targetUrl, json) {
targetUrl = targetUrl.replace('μ§λΌ/', '');
console.log("κ²μ: " + targetUrl);
const auth = 'Basic ' + new Buffer('usr' + ':' + 'pass').toString('base64');
var headers = {
'Authorization': auth,
'Content-Type': 'application/json'
};
return {
hostname: 'jira.acme.com',
port: 443,
path: targetUrl,
method: method,
headers: headers
};
}`
@simov
λ€, μ 첫 λκΈμ λ€μ ν λ² μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°μ΅λλ€.
// λ€λ₯Έ λ―Έλ€μ¨μ΄λ³΄λ€ λ¨Όμ λ°°μΉ
body-parserλ λ―Έλ€μ¨μ΄μ λ€μ΄κ°κΈ° μ μ μμ²μ μ²λ¦¬νμ§λ§ μ±κ³΅μ μΌλ‘ νμ΄ννλ €λ©΄ μμ μμ²μ΄ νμν©λλ€.
κ°μ λ¬Έμ κ° λ°μνμ΅λλ€. λ΄ κ²½μ°μλ bodyParser
λ―Έλ€μ¨μ΄
νΈμ§νλ€:
λͺ¨λ λ―Έλ€μ¨μ΄κ° λ‘λλ ν κ²½λ‘λ₯Ό λ‘λνκ³ μΆκΈ° λλ¬Έμ μ²μμ proxy
κ° μλ λͺ¨λ κ²½λ‘μμ bodyParserλ₯Ό μ μΈνλ μ΄ μ루μ
μ μ ννμ΅λλ€.
pathToRegexp = require('path-to-regexp')
exports.excludeMiddleware = (path, middleware) ->
(req, res, next) ->
if pathToRegexp(path).test req.path
next()
else
middleware req, res, next
app.use(routesService.excludeMiddleware '/proxy/(.*)', bodyParser.json({
extended: false,
parameterLimit: 10000,
limit: 1024 * 1024 * 10
}))
https://stackoverflow.com/questions/27117337/exclude-route-from-express-middleware
κ°μ₯ μ μ©ν λκΈ
λλ μ΄κ²μ΄ μ€λλμλ€λ κ²μ μκ³ μμ§λ§ μ΄μ λν μ μ ν ν΄κ²°μ± μ μ°Ύλ λ° μ΄λ €μμ κ²ͺμκ³ λ€λ₯Έ μ¬λλ€μκ² μ μ©ν κ²μ΄λΌκ³ μκ°νμ΅λλ€.
https://nodejs.org/api/stream.html#stream_readable_pipe_destination_options μ νμλ λλ‘ μ΄λ₯Ό μΆκ°νλ©΄ reqκ° μ’ λ£λ λ μ μ€νΈλ¦Όμ΄ μλμΌλ‘ μ’ λ£λμ§ μλλ‘ ν©λλ€.
μ΄λ‘ μΈν΄ μ΄ μμ κ° μλνμ§λ§ μ΄λ₯Ό μ¬μ©νμ¬ λ€λ₯Έ λ©μλμ λν νλ‘μλ₯Ό λ§λλ λ° λͺ κ°μ§ λ¬Έμ κ° μμμ λ°κ²¬νμ΅λλ€. λͺΈμ²΄λ μ΄λ»κ² λ λͺ¨λ κ²μ μ λλ‘ λ«κ² νμ§λ§ λͺΈμ²΄κ° μμΌλ©΄ μ¬μ ν 맀λ¬λ € μμ΅λλ€. json λ°λ νμλ₯Ό μ¬μ©νλ κ²½μ° λ°λκ° μλ κ²½μ°μλ λ°λκ°
{}
λ‘ μ½νκΈ° λλ¬Έμ λ¬Έμ κ° λ°μνμ§ μμ§λ§ λ°λκ° μμΌλ©΄ μ¬μ ν λ¬Έμ κ° μμ μ μμ΅λλ€. λ΄ νμ¬ μ루μ μ μμ²μ λν μ½ν μΈ κΈΈμ΄ ν€λλ₯Ό νμΈνκ³ μ΅μ κ°μ²΄κ° μμΌλ©΄ μ¬μ©νλ κ²μ λλ€.