多动作 API 最佳实践/设计模式

Multi actions API best Practice / Design Pattern

我有一个 API 具有多项操作 POST 功能。

它的结构是这样的:

exports.myFunction = functions.https.onRequest((request: any, response: any) => {
    const action: 'a' | 'b' | 'c' = request.body.action;
    switch(action) {
      case 'a':
        doProcessA();
        break;
      case 'b': 
        doProcessB();
        break;
      case 'c': 
        doProcessC();        
        break;
    }
    response.send('done');
});

我无法将此函数拆分为 3 个公开的函数。关于这个限制,我的代码是否干净,或者是否有更好的实践/设计模式来处理这种情况?

您使用的 controller/logic 类型并不少见。例如 ASP.net Web API Routing 采取了大致相同的方法。

您只想确保您的代码和 API 以合理的方式组合:

  • 不同的 API 有自己的路由分支 - 就像您发布的那样。
  • 路由尽可能高效和干净。

微服务和 FaaS 设计的主要原则是关注点分离。

如果您的流程相似,或者重用处理的某些部分,您的模式就有意义。


但是,如果你的过程很复杂,如果它们可以独立发展,如果他需要的资源在每个过程中都是相同的,那么这个模式就不是正确的。最好有1个路由器,3个“进程函数”。

你只需要保留一个入口点,没问题,这个功能只会将请求路由到相应的流程功能。

进程函数只负责一个进程。它可以独立进化,可以独立扩展,你可以根据需要调整它(memory/cpu)

一些高级的API网关也可以代替你的路由器功能。