proxy json requests with node express

后端 未结 3 1738
深忆病人
深忆病人 2021-01-13 08:44

I use the following node-express code to proxy requests from a web server to an API server:

app.use(\'/api\', function(req, res) {
  var url = \'http://my.do         


        
相关标签:
3条回答
  • 2021-01-13 09:23

    In the case of a post request, the following construct works:

    app.post('/api/method', (req, res) => {
      req.pipe(request.post(someUrl, { json: true, body: req.body }), { end: false }).pipe(res);
    }
    

    This is of course relevant if you're using the bodyparser middleware.

    0 讨论(0)
  • 2021-01-13 09:26

    You need to move that custom middleware function before this line so that it's executed before any of the body parsers. This makes sure that the request data is still there for piping to request(url) in your custom middleware.

    The cause of the hanging currently is that req has no data to write to request(url) (because the body parsing middleware already read all of the request data and parsed it) and so it never calls .end() on the request(url) stream. This means that the request to url never completes because it's just sitting there waiting for data that it will never get.

    0 讨论(0)
  • 2021-01-13 09:48

    app.use('/api', function(req, res) {
      var url = 'http://my.domain.com/api' + req.url;
      
      request({
              uri: url,
              method: "POST",
              body: _body,
              json: true
          }, function (_err, _res, _resBody) {
              //do somethings
              res.json(_resBody);
          });
    
    });

    0 讨论(0)
提交回复
热议问题