发布与expressjs远程URL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发布与expressjs远程URL相关的知识,希望对你有一定的参考价值。

我有这个在我的server.js

app.post("/leadAPI/ed",function(request,response){
//api post code here
});

在这篇文章要求我需要张贴包含在请求体到一些外部API与特定的URL数据并发送回响应使用response.send。如何做一个干净的方式。有什么建在这expressjs?

答案

作为安德烈亚斯提到的,这是无法表达的义务。其职责是当一个HTTP请求进入调用你的函数。

您可以使用节点内置的HTTP客户端,如安德烈亚斯在评论中也提到,对您的外部网站的请求。

尝试是这样的:

var http = require('http');

app.post("/leadAPI/ed", function(request, response) {
  var proxyRequest = http.request({
      host: 'remote.site.com',
      port: 80,
      method: 'POST',
      path: '/endpoint/url'
    },
    function (proxyResponse) {
      proxyResponse.on('data', function (chunk) {
        response.send(chunk);
      });
    });

  proxyRequest.write(response.body);
  proxyRequest.end();
});

我敢肯定,你需要去适应它来处理分块响应,并找出传输编码的,但是这是你所需要的要点。

有关详细信息,请参阅

http://nodejs.org/api/http.html

另一答案

我会用Mikeal罗杰斯request库这样的:

var request = require('request');

app.post("/leadAPI/ed",function(req, res){
  var remote = request('remote url');

  req.pipe(remote);
  remote.pipe(res);
});
另一答案

你可以不喜欢这样。

var request = require('request');
var url = "<remote url>"
app.post("/leadAPI/ed",function(request, response){
  request.get({url:url, headers:request.headers, body:request.body}, function (err, res, body) {
    if(!err) {
      response.status(200).send(res) // JSON.stringify(res) if res is in json
    }
  })
})

请记住,内容类型应该是两者相同。

以上是关于发布与expressjs远程URL的主要内容,如果未能解决你的问题,请参考以下文章

使用 ExpressJS 重写 URL

ExpressJS 路由器规范化/规范 url

AngularJS + ExpressJS。代理 POST 请求待处理

从 Angular/NodeJS/ExpressJS 向 3rd 方 URL 的 POST 请求

expressjs req.url 路径如何成为另一个url?

从外部 URL 下载图像,使用 JavaScript 和 ExpressJs 保存在服务器上 [重复]