微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js的API网关示例

寻找如何为微服务应用程序实现节点API网关的一个很好的例子,我理解拥有网关的目的,我只是不确定如何实现这一点而不仅仅添加另一级别的RESTful路由调用.对我来说,网关应该只是将路由指向微服务.

API网关端口3000

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

Microservice1 server.js port 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',next) {
  //get route code
});

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

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

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

解决方法

假设您的微服务是它自己的http服务器(如果没有,那么请详细说明它的架构)并假设您的API设计为可以轻松识别哪些路由到哪个微服务而不指定每个可能的路由,那么您应该能够为整个微服务创建一个路由处理程序(或者最坏的是为整个微服务创建极少数的路由处理程序).

例如,如果所有以/ api / foo开头的请求都转到foo微服务,那么你应该能够拥有一个捕获/ api / foo / *的路由处理程序和代理到微服务的代理.如果您有所有请求的通用中间件(例如运行或验证身份验证过程的中间件),那么它可以在代理路由处理程序之前位于堆栈中,因此将为所有发送到微服务的请求调用它.

如果传入的API调用和微服务API之间没有一对一的映射,那么您必须在两者之间创建映射.根据不匹配的级别,您可以使用表驱动方法执行此操作,您可以在其中指定与表中的内容匹配的内容,然后通过一个通用代码处理表中的所有定义.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐