在 loopback 4 中创建 requestBody 的最佳实践是什么?

What is the best practice of creating requestBody in loopback 4?

目前我正在处理 Loopback4,我遇到了这个问题。

    @requestBody({
      content: {
        'application/json': {
          schema: getModelSchemaRef(LoginCredentials, {
            title: 'Login'
          })
        },
      }
    }) credentials: LoginCredentials

在此代码块中,我为请求正文创建了一个模型。这是定义请求正文的最佳方式吗?

这是定义请求正文的最佳方式吗?

是的。模型的主要目的是成为定义任何数据形状的主要界面。这使得跨不同层(例如 REST 和存储库)的重用成为可能,并鼓励创建单一的事实来源。这意味着更好的长期代码可维护性,如数据设计漂移和重复代码等问题。

还有其他方法来定义请求主体吗?

是的。请求主体装饰 (@requestBody()) 接受 OpenAPI 3.0 规范对象。因此,可以编写 OpenAPI 规范而不是依赖 getModelSchemaRef() 从模型生成它。但是,应该谨慎地这样做以缓解上述问题。

如果我的模型太多怎么办?

引导的工件可以存储在嵌套目录中;因此,模型可以按其业务领域进行隔离。例如,与身份验证相关的模型可以存储在 src/models/auth/MyModel.model.ts.

模型之外的代码隔离

另一种解决方案是使用组件来分离代码。如果做得好,组件可以通过从主代码库中隐藏引导逻辑和工件来实现近乎完全的代码隔离。例如,所有身份验证代码和工件 - 尽管有控制器、数据源和模型 - 都可以保存在 src/components/auth/* 下。从应用程序的其余部分的角度来看,唯一需要的操作是使用 app.component(MyAuthComponent) 和一些绑定配置来绑定组件。这意味着责任有明确的分离,从而提高了代码的可读性,因为除非必要,否则开发人员将不必查看分离代码的实现细节。