2014-09-09 1 views
0

익스프레스 서버를 시작하는 꿀꺽 꿀꺽하는 작업을 작성 중입니다. 사이트를 작동 시키려면 locahost에서 특정 IP로 요청을 리디렉션해야합니다.리디렉션 API 호출

이 내가 지금 무엇을 가지고 : 나는 리디렉션 192.168.1.1:8090/api 할 8090/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); 
}); 

내가 localhost로 요청을

.

어떻게 호스트 이름을 다시 쓸 수 있습니까? 내가 일하는 유일한 방법은 경로명을 다시 쓰는 것입니다.

업데이트 :

내가 요청이 취소 누가 받 리디렉션을 추가. 모든 머리글을 내 res 객체에 전달하려면 어떻게해야합니까?

+0

미들웨어를 다시 작성하면 경로 이름 만 들어있는 [req.url'] (https://github.com/loopj/connect-url-rewrite/blob/a2861c4849bbfd8c50edf77259caa877f4ad642a/lib/index.js#L14)가 다시 작성됩니다. 제 생각에는'res.redirect'를 사용해야 할 것입니다. – vesse

+0

업데이트 된 질문보기 –

+1

AJAX에 대한 요청입니까? 이 경우 요청은 교차 출처 요청이므로 취소됩니다. 성취하려는 것은 무엇입니까? 귀하의 질문 예입니다. "localhost에서 프론트 엔드를 개발할 때 Gulp를 사용하여 백엔드에 AJAX 호출을 프록시 할 수 있습니까?" – vesse

답변

1

Gulp를 사용하여 백엔드로 AJAX 호출을 프록시하는 쉬운 방법 중 하나는 gulp-webserver입니다. 예 : 예 /api에서

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' 
     } 
     ] 
    })); 
}); 

이 의지 프록시 모든 경로. http://localhost:8090/api/v1/users/1으로 전화하면 http://192.168.1.1:8090/api/v1/users/1으로 요청을 프록시합니다.

./public의 예는 웹 서버가 제공하는 정적 자산의 루트 폴더입니다. Gulpfile에 컴파일 된 에셋 파일을 복사 할 폴더입니다.