首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >node.js的示例

node.js的示例
EN

Stack Overflow用户
提问于 2016-06-10 03:45:30
回答 1查看 4.6K关注 0票数 5

为了寻找如何为微服务应用程序实现节点API网关的良好示例,我理解拥有网关的目的,只是不知道如何在不添加另一个级别的RESTful路由调用的情况下实现该网关。对我来说,网关应该是直接通向微服务的路线。

API网关端口3000

代码语言:javascript
运行
复制
router.use('/microservicename/*', function (req, res, next) {
     **code that will direct to microservice**
});

Microservice1 server.js端口3001

代码语言:javascript
运行
复制
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)

代码语言:javascript
运行
复制
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
});
EN

回答 1

Stack Overflow用户

发布于 2016-06-10 04:03:39

假设您的微服务是它自己的http服务器(如果不是,请解释更多关于它的体系结构),假设您的API的设计使您可以轻松地识别哪些路由到哪个微服务,而无需指定每一个可能的路由,那么您应该能够为整个微服务创建一个路由处理程序(或者在最坏的情况下,为整个微服务创建一个非常少的路由处理程序)。

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

如果在传入的API调用和微服务API之间没有1到1的映射,那么必须在两者之间创建一个映射。根据不匹配级别的不同,您可以使用表驱动的方法来实现这一点,在这种方法中,您可以指定与表中的内容匹配的内容,然后一段通用代码处理表中的所有定义。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37739538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档