发布于 2026-01-06 6 阅读
0

如何创建速度提升 10 倍的 API?

如何创建速度提升 10 倍的 API?

我热爱编程,作为一名拥有近15年编程经验的开发者,我热爱编程。但这并不意味着我喜欢总是写同样的东西。我讨厌编写简单的CRUD操作,也讨厌一遍又一遍地创建相同的表单。正因如此,我开发了一种简单而高效的方法,可以将API的创建速度提升10倍。我相信它会成功。

我是如何测量速度的?其实我并没有测量。我不知道有什么方法可以比较两个(水平相近的)开发者创建 API 的不同速度。但我能感受到速度。请继续阅读,我将向您解释为什么它这么快。

问题

问题在于不断重复相同的任务。在选择编程语言框架后,你需要创建表、创建模型、创建路由,最后在控制器中实现基本的 CRUD 功能。但编写 CRUD 功能并非最终目的。我们编写代码并非仅仅为了在数据库中插入或更新记录,而是为了添加一些业务逻辑。插入、更新或删除并非我们的目标。
另一方面,当你查看数据库结构时,遵循最佳实践,你就能清晰地看到其 API 端点之间的关系。因此,
我决定创建一个结构,用于分析模型及其相互关系,从而创建和管理路由。

解决方案

为了创建 API,框架对开发者来说非常有帮助。所以我决定使用一个框架。我选择了 AdonisJs,它内置了 ORM 库以及许多其他对我这个 Node.js 开发者来说非常有用的功能。
我创建了一个简单的服务提供者,并将其命名为 AdonisX。它本身并不是一个框架,而是一个使用框架(AdonisJs)的服务提供者,它通过注入的方式将自身集成到 AdonisJs 应用中,用于分析模型和关系,从而创建和管理路由。

工作原理

使用 AdonisX 非常简单。AdonisX 会分析应用程序中的模型。假设您有一个如下所示的模型;

const XModel = use('AdonisX/Models/XModel')

class User extends XModel {
  static get table () {
    return 'users'
  }
}

module.exports = User

当您的应用程序中包含此模型时,AdonisX 将在初始化过程中分析您的模型并创建以下路由;

  • GET api/users
  • POST api/users
  • GET api/users/:id
  • PUT api/users/:id
  • 删除 api/users/:id

AdonisX 不仅会创建路由,还会处理对该资源的 HTTP 请求。您只需定义模型即可,无需其他操作。您的 API 已准备就绪!

业务逻辑呢?

关键在于业务逻辑。我们再记住一点:我们编写代码不是为了在数据库中插入或更新记录。我们编写代码是因为我们需要一些业务逻辑来盈利。例如,作为一名开发人员,我可能需要进行表单验证、仅允许某些路由、在用户创建后向其发送电子邮件,甚至添加一些复杂的代码。我该如何实现所有这些业务逻辑呢?
有两种不同的方法。AdonisX 提供了一些定义,您可以根据自己的业务逻辑进行扩展。这是第一种方法。例如,您可以在模型定义中定义表单验证;

const XModel = use('AdonisX/Models/XModel')

class Users extends XModel {
  static get validations () {
    return {
      email: 'required|email',
      name: 'required|max:50',
      surname: 'required|max:50',
      age: 'max:100'
    }
  }
}

module.exports = User

有很多选项可供您使用。但我认为,这种配置迟早会不够用,因为您的业务逻辑会变得非常复杂。例如,您可能需要向其他服务发送请求来检查某些内容。在 Adonix 中,我们创建了一种称为“操作”(actions)的结构,它可以帮助您实现业务逻辑。
您只需创建一个操作文件来捕获对资源的特定请求即可。以下是一个简单的示例:

// app/Actions/UserActions.js

module.exports = {
  async onBeforeCreate ({ request, params, data }) {
    // Implement your business logic in here.
  }
}

搞定了!现在你可以处理 User 模型的所有 beforeCreate 操作了。你可以在这里编写任何你想要的代码。
此外,还有一个事件机制可以使用。请查看文档了解更多详情

结论

本文并非旨在介绍 AdonisX 的所有功能。我主要想解释我创建它的初衷,以及它如何帮助我们以最快的速度创建 API。但它的功能远不止于此!AdonisX 拥有完善的文档,可以帮助您理解其众多特性。这些特性等待您亲自探索发现。

文章来源:https://dev.to/ismaildenzzz/how-to-create-an-api-10-times-faster-2f94