我是靠谱客的博主 清秀万宝路,最近开发中收集的这篇文章主要介绍node.js rest_我如何组织Node.js REST API,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

node.js rest

当我开始使用Node.js在服务器端构建REST API时,我一次又一次地为同一个问题苦苦挣扎:

文件夹结构应如何?

显然,这个问题没有一个完美的答案或100%正确的答案,但是在阅读了有关该主题的一些文章之后,我发现了一个非常适合我需要的文件夹结构。 因此,今天我想向您展示如何构建REST API。

这些API主要基于组件,这使得仅请求我们真正需要的数据变得更加容易。 例如,我们有一个User组件,其中包含有关用户的所有信息。

要提及的一件事是,我将express.js用作网络框架,将TypeORM用作ORM。 让我们看一下结构。

目录:

nodejs-api-structure
└───dist
│
└───logs
│
└───node_modules
│
└───src
│
│README . md
│
...

这种结构没什么特别的,对您来说不应该是新的。 它实际上是一个基本的Node.js设置。 有趣的部分是我们关注的src文件夹。

那我们这里有什么?

nodejs-api-structure
└───src
│
└───config
│
└───api
│
│
│
└───components
│
│
│
└───middleware
│
│
│
│
routes.ts
│
│
server .ts
│
└───services
│
index.ts

从这里开始,我们将始终从目录的顶部开始工作,我将逐一解释。 让我们从config目录开始。

目录:src / config

nodejs-api-structure
└───src
│
└───config
│
globals.ts
│
logger .ts
│
permissions.ts

该目录包括配置文件。 例如:

  • 全局变量
  • 记录器配置
  • ACL权限
  • SMTP配置

目录:src / api / components

nodejs-api-structure
└───src
│
└───api
│
└───components
│
└───article
│
└───auth
│
└───country
│
└───user
│
index .ts

在这里,我们有了基于组件的API的核心。 每个组件都包含自己的路由控制器模型服务

让我们深入研究用户组件并以它为例。

目录:src / api / components / user

nodejs-api-structure
└───src
│
└───api
│
└───components
│
└───user
│
controller.ts
│
model .ts
│
routes .ts
│
service.ts

如您所见,组件由我之前提到的文件组成。 每个文件代表一个导出的类。 当然,您可以在此处添加更多组件特定的内容,例如配置或测试文件。

由于我有多个组件,并且大多数时候它们的类具有相同的结构,因此我还创建了在类中实现的接口。 这有助于我保持组件的结构平直。

控制器

控制器类处理传入的请求,对其进行验证,然后将响应数据发送回客户端。 它使用服务类与数据库进行交互。

模型

该模型代表其组件的数据库模型。 就我而言,这是TypeORM类。 通常,它由服务类使用。

route.ts

在这里,我们为相应的组件定义API端点,并为其分配控制器方法。 此外,我们可以执行授权(例如JWT),权限验证(例如ACL)或添加特定于组件的中间件之类的事情。

服务

服务类的作用类似于数据库的包装器。 在这里,我们读取数据并将数据写入数据库。 此外,我们可以实现例如缓存。

目录:src / api / middleware /

nodejs-api-structure
└─── src
│
└─── api
│
└─── middleware
│
auth .ts
│
compression .ts

该文件夹包含所有API的全局中间件,例如身份验证,压缩,请求日志记录等。

文件:src / api / routes.ts

nodejs -api- structure
└───src
│
└───api
│
routes.ts

在这里,我们注册了所有组件和中间件路由。

文件:src / api / server.ts

nodejs -api- structure
└───src
│
└───api
│
server.ts

在这里,我们声明了快递服务器所需的一切:

  • 导入中间件/组件路由
  • 错误处理

稍后,我们也可以导入服务器类以进行单元测试。

目录:src / services /

该目录包含我们用于发送邮件,授权或帮助方法的全局服务。

nodejs-api-structure
└───src
│
└───services
│
auth.ts
│
helper .ts
│
mail.ts

授权

在这里,我们设置诸如护照策略之类的东西并定义授权方法。

助手

helper类包含用于哈希,UUID等的helper方法。

mail.ts

此服务用于发送邮件和呈现其模板。

文件:src / index.ts

这是我们应用程序的启动文件。 它将初始化数据库连接并启动快递服务器。

nodejs-api-structure
└───src
│index . ts

全部一起

最后但并非最不重要的是,该项目结构的完整概述:

nodejs-api-structure
└───src
│
└───config
│
│
globals.ts
│
│
logger .ts
│
│
permissions .ts
│
└───api
│
│
│
└───components
│
│
│
│
│
└─── article
│
│
│
│
│
└───user
│
│
│
controller .ts
│
│
│
model .ts
│
│
│
routes .ts
│
│
│
service .ts
│
│
│
└───middleware
│
│
│
auth .ts
│
│
│
compression .ts
│
│
│
│
routes .ts
│
│
server .ts
│
└───services
│
index.ts

而已! 我希望这对那些遇到相同问题但又不知道从哪里开始或如何开始的人们有所帮助。 我认为仍有许多事情可以做得更好或更有效。

我目前正在开发一个副项目,您可以在其中看到此文件夹结构(以小的修改方式)。 看看这个。

先前发布在https://medium.com/swlh/how-i-structure-my-node-js-rest-apis-4e8904ccd2fb

翻译自: https://hackernoon.com/how-i-organized-my-nodejs-rest-api-aq573376

node.js rest

最后

以上就是清秀万宝路为你收集整理的node.js rest_我如何组织Node.js REST API的全部内容,希望文章能够帮你解决node.js rest_我如何组织Node.js REST API所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部