pwb*_*ich 5 node.js microservices
寻找有关如何为微服务应用程序实现节点API网关的好示例,我了解拥有网关的目的,只是不确定如何在不添加另一级RESTful路由调用的情况下实现此网关。对我来说,网关应该只是将路由定向到微服务。
API网关端口3000
router.use('/microservicename/*', function (req, res, next) {
**code that will direct to microservice**
});
Run Code Online (Sandbox Code Playgroud)
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/');
});
Run Code Online (Sandbox Code Playgroud)
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
});
Run Code Online (Sandbox Code Playgroud)
假设您的微服务是它自己的 http 服务器(如果不是,那么请详细解释其架构),并假设您的 API 的设计使您可以轻松识别哪些路由到达哪个微服务,而无需指定每个可能的路由,那么您应该能够为整个微服务创建一个路由处理程序(或者最坏的情况是为整个微服务创建极少量的路由处理程序)。
例如,如果所有以 开头的请求都/api/foo转到foo微服务,那么您应该能够有一个路由处理程序来捕获/api/foo/*该请求并将其代理到微服务。如果您对所有请求都有通用的中间件(例如运行或验证身份验证过程的中间件),则该中间件可以位于代理路由处理程序之前的堆栈中,以便为发送到微服务的所有请求调用它。
如果传入 API 调用和微服务 API 之间没有一对一的映射,则必须在两者之间创建映射。根据不匹配的程度,您可以使用表驱动的方法来执行此操作,在该方法中您指定与表中的内容匹配的内容,然后一段通用代码处理表中的所有定义。
| 归档时间: |
|
| 查看次数: |
3824 次 |
| 最近记录: |