역방향 에이전트 (NodeJS) 를 사용 하여 전단 AJAX 디 버 깅
또한 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 데이터 가 긴축 형식 이어서 사람 이 식별 하기 쉽 지 않 아 아예 다시 처리 해 디 버 깅 하기 편 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
전단 자동화 워 크 플 로 의 hooks예 를 들 어 우 리 는 git commt 전에 eslint 코드 검사, npm install 전에 프로젝트 의존 도 를 검사 하고 싶 습 니 다.전형 적 인 상황 에서 각종 도 구 는 특정한 동작 이 발생 할 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.