NodeJS API - 用于导致内部API重定向的代理服务模式

时间:2016-03-16 20:55:09

标签: node.js api rest express

我们目前正在开发一个存储API的nodejs应用程序(包括get和post HTTP方法)。 nodejs服务器中的这些服务器API可单独访问或允许调用。喜欢/ api / login(login api)允许直接从客户端调用。

接下来,我想介绍一个服务代理API,它应该是客户端所有API调用的入口点。因此,任何调用特定API(如/ api / login)的客户端都应该通过服务代理,然后服务代理应根据客户端发送的特定服务详细信息重定向到所请求的API。

因此,所有客户端应该只能调用一个API(即代理服务API - / broker / service)。因此,来自客户端的所有请求应首先命中服务代理API,然后服务代理应根据从客户端传递给服务代理的输入参数重定向到适当的API。输入参数可以包含API URL和输入数据。

目前,我可以直接从客户端连接到各个API。但是,现在我想引入一个新层即服务代理,并且代理服务应该决定哪个API应该重定向请求以及输入数据(从客户端发送)。

注意:代理服务API和其他功能特定的API都托管在同一个域下。所以,不会有任何CORS问题。我们正在使用" express"用于处理HTTP API请求的节点模块。

  • 我最初的问题是这个要求是否可以实现?
  • 如果是,那么我们可以在节点服务器中执行API的内部重定向吗?
  • 这可以通过快速节点模块来实现吗?

请帮助我。

1 个答案:

答案 0 :(得分:0)

如果你真的想走这条路,你可以这样做:

app.get('*', function(req, res){
  the_route_passed = req.originalUrl;
  //handle all of the routes here in your api function call.
});

这样做是因为从前端传递的每一条路线都会通过你的功能,然后你可以抓住为{} 1}传递的路线req.originalUrl对于用户230然后你需要解析这条路线,或者你想要这样做,然后把它传递给你的服务经纪人。

如果您已经在使用路由,这将是处理前端无需更改任何内容的最佳方法。另一种从长远来看可能更好的方式:

在每个请求上发送JSON并根据需要进行配置,然后当您收到它时,您可以在每次访问时从JSON请求中找出所有路由。你必须重写前端的所有路由才能做到这一点,虽然这可能太多了。