2016-07-18 13 views
1

apiで始まる要求を別のサーバに転送する必要があります。私はこのようなexpressrequest使用:node.js要求によるプロキシ:DELETEメソッドが動作しない

var API_SERVER_HOST = "http://something.lala/output-api"; 

    // call the packages we need 
    var express = require('express'); 
    var request = require('request'); 

    var port = process.env.PORT || 8080; // set our port 
    var app = express();     // define our app using express 

    // all of our routes will be prefixed with /api 
    app.use(express.static('webapp')); // static content 
    app.use('/api', function(req, res){ // proxying 
     var url = API_SERVER_HOST + req.url; 
     console.log(" - " + req.url + " => " + url + " " + req.method); 
     req.pipe(request(url)).pipe(res); 
    }); 

    // launch 
    app.listen(port); 
    console.log('Magic happens on port ' + port); 

これまでのところ、とても良い:魅力のようなGET, POST, PUT仕事、しかしDELETE方法が悪いのリクエストで終わります。ログは正しいです:正しいurlとdeleteメソッド。ログのURLをcurl -X DELETEにコピーしてコピーすると、魅力的に機能します。

リクエストパイプがDELETEメソッドを処理していませんか?何か案が ?

答えて

0

同じ問題が発生している場合は、requestsの代わりにhttp-proxyを使用して問題を解決しました。コードは次のようになります。それは、要求のいずれかのタイプのために素晴らしい作品と完璧なボディ、クエリとURLパラメータを処理

var API_SERVER_HOST = "http://something.lala/output-api"; 

var express = require('express'); 
var request = require('request'); 
// use http-proxy instead of requests 
var proxy = require('http-proxy').createProxyServer({ host: API_SERVER_HOST }); 

var port = process.env.PORT || 8088; 
var app = express();     


// setup redirect 
app.use('/api', function(req, res, next) { 
    proxy.web(req, res, { 
     target: API_SERVER_HOST 
    }, next); 
}); 

// listen to redirects (for logging purposes only) 
proxy.on('proxyReq', function(proxyReq, req, res, options) { 
    console.log("request : url=", req.url, req.body ? "body=" + req.body : ""); 
    console.log("response: status=", res.statusCode); 
}); 

関連する問題