2014-09-09 4 views
0

Я создаю задачу gulp, которая запускает экспресс-сервер. Чтобы заставить сайт работать, мне нужно перенаправить запросы от locahost на определенный IP-адрес.Переадресация вызовов API

Это то, что я прямо сейчас:

var rewrite = require("connect-url-rewrite"); 
gulp.task('express', function() { 
    var express = require('express'); 
    var app = express(); 
    var rules = [ 
     "^localhost\/(.*)$ 192.168.1.1\/$1" 
    ];; 

    app.use(require('connect-livereload')({ 
     port: 35729 
    })); 

    app.get('api/v1', function(req, res, next) { 
     res.redirect('http://192.168.1.1:8090'+req.originalUrl); 
    }); 

    app.use(rewrite(rules)); 
    app.use(express.static(__dirname)); 

    app.listen(8090); 
}); 

Когда я делаю запрос на локальный: 8090/API Я хочу редирект на 192.168.1.1:8090/api.

Как я могу переписать имя хоста? Единственное, что я получаю, это переписать путь.

Update:

Когда я добавить перенаправление запроса будет отменено. Как передать все заголовки в объект res?

+0

Это переписывание промежуточного программного обеспечения [переписывает 'req.url'] (https://github.com/loopj/connect-url-rewrite/blob/a2861c4849bbfd8c50edf77259caa877f4ad642a/lib/index.js#L14), который содержит только путь. Я думаю, вам нужно будет использовать 'res.redirect'. – vesse

+0

См. Мой обновленный вопрос. –

+1

Является ли запрос вы говорите о некоторых материалах AJAX? Если это так, запрос отменяется, потому что это будет запрос перекрестного происхождения. Что вы пытаетесь достичь? Ваш вопрос, например. «Как я могу использовать прокси-сервер AJAX для поддержки с помощью Gulp при разработке интерфейса на локальном хосте»? – vesse

ответ

1

Один простой способ проксирования вызовов AJAX на ваш сервер с помощью Gulp будет использовать gulp-webserver. Пример:

var gulp  = require('gulp'), 
    webserver = require('gulp-webserver'); 

gulp.task('server', function() { 
    gulp.src('./public') 
    .pipe(webserver({ 
     port:  8090, 
     livereload: true, 
     proxies: [ 
     { 
      source: '/api', 
      target: 'http://192.168.1.1:8090/api' 
     } 
     ] 
    })); 
}); 

Это проксирует все маршруты под /api, т.е. звонок http://localhost:8090/api/v1/users/1 проксирует запрос на http://192.168.1.1:8090/api/v1/users/1.

./public в примере является корневой папкой для статических активов, обслуживаемых веб-сервером, т.е. папку, в которую вы копируете файлы скомпилированных активов в свой Gulpfile.

Смежные вопросы