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

标签 javascript node.js typescript loopbackjs loopback4

目前我正在研究 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 下。

模型之外的代码隔离

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

关于javascript - 在 loopback 4 中创建 requestBody 的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65437929/

相关文章:

javascript - 如何在 Javascript 的搜索方法中使用 RegExp 中的变量?

node.js - TypeORM 和 MongoDB 和存储库 : Cannot read property 'prototype' of undefined

macos - Node.js 版本和 Heroku

typescript - 在页面之间导航时如何使菜单正确显示

javascript - 如何在 VSCode 的同一个项目中对 .ts 文件和 .js 文件运行 typescript-eslint

javascript - 如何在react-admin中的 ListView 中添加永久过滤功能?

javascript - jquery validate plugin - 仅当其中一个字段不为空时才验证

node.js - 使用 NPM 为私有(private)存储库添加版本号注释

javascript - typescript :编译文件而不镜像目录层次结构

javascript - 为什么 Angular 区分 `<my-element></my-element>` 和 `<my-element/>` ?