2016-06-10 4 views
4

마이크로 서비스 애플리케이션에 노드 API 게이트웨이를 구현하는 방법에 대한 좋은 예를 보려면 게이트 웨이를 갖는 목적을 이해합니다. 단지 추가하지 않고이를 구현하는 방법을 잘 모르겠습니다. RESTful 라우트 호출의 또 다른 레벨. 내게 게이트웨이는 단지 마이크로 서비스에 대한 경로를 지시하기로되어 있습니다.node.js에 대한 API 게이트웨이 예제

API 게이트웨이 포트 3000

router.use('/microservicename/*', function (req, res, next) { 
    **code that will direct to microservice** 
}); 

Microservice1 server.js 포트 3001

var express = require('express'); 
var app = express(); 

var routes = require('./routes/routes'); 

app.use('/microservicename', routes); 

var server = app.listen(3001, function() { 
    console.log('Server running at http://127.0.0.1:3001/'); 
}); 

Microservice1의 router.js (3001)

router.get('/route1', function (req, res, next) { 
    //get route code 
}); 

router.post('/route2', function (req, res, next) { 
    //post route code 
}); 

router.put('/route3', function (req, res, next) { 
    //put route code 
}); 

router.delete('/route4', function (req, res, next) { 
    //delete route code 
}); 

답변

3

마이크로 서비스가 자체 http 서버라고 가정하면 (그렇지 않은 경우 아키텍처에 대해 자세히 설명하십시오) API가 가능한 모든 단일 경로를 지정하지 않고 어떤 경로가 어떤 마이크로 서비스로 이동하는지 쉽게 식별 할 수 있도록 설계되었다고 가정하면 전체 마이크로 서비스에 대해 하나의 경로 처리기를 만들 수 있어야합니다 (또는 전체 마이크로 서비스를위한 최하위 수의 경로 처리기). /api/foo로 시작하는 모든 요청이 foo microservice에 가면

예를 들어, 당신은 /api/foo/*을 잡는다과 microservice에 있음을 프록시를 단일 경로 처리기를 가질 수 있어야합니다. 모든 요청에 ​​공통된 미들웨어 (예 : 미들웨어가 실행되거나 인증 프로세스를 확인하는 경우)는 프록시 경로 처리기보다 먼저 스택에있을 수 있으므로 마이크로 서비스로 이동하는 모든 요청에 ​​대해 호출됩니다.

들어오는 API 호출과 마이크로 서비스 API간에 일대일 매핑이없는 경우 두 API 사이에 매핑을 만들어야합니다. 불일치 수준에 따라 테이블의 내용과 일치하는 항목을 지정한 다음 한 테이블의 일반 코드가 테이블의 모든 정의를 처리하는 테이블 중심 접근 방식으로이 작업을 수행 할 수 있습니다.

+0

예 가정이 정확합니다. 제 질문에 대해 명확하고 설명이 있어야했습니다. 나는 지금까지 가지고있는 것의 일부 코드로 나의 질문을 업데이트했다. – pwborodich

+0

@pwborodich - http 동사를 경로 접두사에 매핑하려고합니까? 우리는 들어오는 경로가 어떤 마이크로 서비스 URL로 연결되는지 이해한다면 더 잘 도와 줄 수 있습니다. – jfriend00

+0

내 각 클라이언트를 가지고 있다면 위의 router.js의 첫 번째 경로와 마찬가지로 http : // localhost : 3000/microservice/route1을 요청할 수 있습니다. 어떻게하면 게이트웨이를 마이크로 서비스 – pwborodich