역방향 에이전트 (NodeJS) 를 사용 하여 전단 AJAX 디 버 깅

최근 에는 AJAX 를 포함 한 전단 코드 를 대량으로 조정 해 야 하 며 데 이 터 는 JSON 형식 을 사용 합 니 다.게으름뱅이 로 서 나 는 매번 Visual Studio 를 열 고 서 비 스 를 뛰 고 싶 지 않다.그러나 AJAX 접근 에 도 메 인 을 뛰 어 넘 는 문제 가 있어 서 로 컬 JSON 파일 에서 아 날로 그 데 이 터 를 직접 가 져 올 수 없습니다. 그래서 저 는 NodeJS + Express 를 달 려 서 데이터 시 뮬 레이 션 을 했 습 니 다.
또한 JSON 파일 로 데 이 터 를 모듈 하 는 데 두 가지 문제 가 있 습 니 다. 하 나 는 같은 API 라 도 서로 다른 업무 처리 가 서로 다른 반환 결 과 를 가 집 니 다. 하물며 API 는 소수 가 아 닙 니 다.또한 AJAX 는 같은 API 를 호출 하여 업무 처리 에 따라 다른 결 과 를 되 돌려 야 합 니 다. 이것 은 정적 JSON 파일 로 는 할 수 없 는 것 입 니 다.
NodeJS 로 업무 지점 을 모 의 하고 다른 결 과 를 되 돌려 준다 면.......................................................................그러면 NodeJS 로 얻 은 요청 을 개발 서버 에 전달 하고 개발 서버 가 되 돌아 온 결 과 를 전단 으로 되 돌려 줍 니까? 이 방법 이 좋 습 니 다. 표준 적 인 역방향 프 록 시 모델 입 니 다.
그 다음 에 NodeJS 의 프 록 시 구성 요 소 를 찾 았 습 니 다. node - Huttp - proxy 와 simple - http - proxy 를 찾 았 습 니 다. 간단 한 테스트 를 통 해 작 동 하지 못 했 습 니 다. 잘못된 설정 이 있 는 것 같 습 니 다.이 두 가 지 를 연구 하 는 데 신경 쓰 고 싶 지 않 기 때문에 아예 NodeJS 의 http. request 로 이 루어 진다.어차피 JSON 대리 일 뿐 비 즈 니스 논리 도 없다.
기본 적 인 사고방식 은 express 를 위해 루트 처리 모듈 을 쓰 고 모든 "/ api /" 시 작 된 URL 을 이 루트 프로세서 모듈 로 처리 하 는 것 이다.이 모듈 은 요청 한 URL 을 개발 서버 의 URL 로 변환 하고 요청 한 매개 변 수 를 그대로 가 져 온 다음 개발 서버 에서 돌아 온 결 과 를 브 라 우 저 에 되 돌려 줍 니 다.
app. js 에 경로 설정 추가
app.get("/api/*", require("./routes/proxy").proxy);

그리고 간단 한 역방향 에이전트 로 파일 routes / proxy. js 를 추가 합 니 다.
var http = require("http");
var querystring = require("querystring");
exports.proxy = function(req, res) {
    //    /api/      URL   
    var path = req.path.replace(/^\/?api/, "");
    //       
    var contents = querystring.stringify(req.query);
    var options = {
        // TODO       
    };
    //    http             
    var request = http.request(options, function(response) {
        if (response.statusCode != 200) {
            // TODO     ,    
            return;
        }
        // TODO   response         res       
    });
    //         
    request.write(contents);
    request.end();
};

그 중에서 문서 에 따라 options 부분 은 서버 호스트, 경로, 요청 방법 등 을 설정 해 야 합 니 다. 인터넷 에서 직접 변경 사항 을 찾 았 습 니 다.
var options = {
    host: 'dev.my-server.com',
    path: path,
    method: 'GET',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': contents.length
    }
};

그리고 개발 서버 를 처리 한 결과두 가지 상황 에서 정상 적 인 상황 은 JSON 데 이 터 를 되 돌려 주 고 코드 200 을 되 돌려 주어 야 한다.이상 (예 를 들 어 네트워크 이상) 의 경우 비 200 코드 로 돌아 가 야 합 니 다.
이상 한 상황 을 먼저 처리 하 다.
if (response.statusCode != 200) {
    res.status(response.statusCode).end();
    return;
}

정상 적 인 상황 을 재 처리 하 다.
response.setEncoding('UTF-8');
response.on('data', function(data) {
    var obj = JSON.parse(data)
    res.json(obj);
});

원래 데 이 터 를 받 으 면 브 라 우 저 에 직접 보 낼 수 있 었 는데 서버 에서 되 돌아 오 는 JSON 데이터 가 긴축 형식 이어서 사람 이 식별 하기 쉽 지 않 아 아예 다시 처리 해 디 버 깅 하기 편 했다.

좋은 웹페이지 즐겨찾기