将业务逻辑放在Node + Express.js RESTApi上的位置

时间:2018-12-13 16:55:19

标签: javascript node.js express model-view-controller

我具有以下Node + Express.js RESTApi体系结构:

- controllers
- db
-- models
-- config
-- migrations
- helpers
- routes
- services
- test
package.json
index.js

在何处放置业务规则? (控制器,模型,服务?)

2 个答案:

答案 0 :(得分:1)

ExpressJS有点新,可喜的是它不像Rails和有关组织代码的常规PHP框架那样规范。

我正在以这种方式构造代码:

  • 路线:按照之前的注释:将API调用定向到正确的控制器功能
  • 控制器:接收带有要求的API调用。数据,请在API调用的上下文中进行一些验证(与http相关,例如:API auth等)
  • 服务:控制器随后调用包含业务逻辑的服务。这个想法是服务(业务逻辑)不依赖于控制器和需求。数据。该服务接收所需的数据(从请求中提取的数据,可能还包括其他内容),并返回控制器可以使用的其他数据。数据。

答案 1 :(得分:0)

从您的文件夹结构来看,这就是我的制作方法。 P.S这就是我仅通过读取文件夹名称就对您的项目结构的看法,这虽然不完美,但可能会对您有所帮助。

- controllers -> logic before saving to the db, check permission, etc..
- db
-- models -> all the stuff who touch a models himself, the schema,etc
-- config -> config about the db, connection to the db etc
-- migrations -> all the migrations file for the db
- helpers -> helpers function like sum, total, pluralize, etc
- routes -> all the rest api route, where they take a controller as callback
- services -> stripe, aws s3 etc
- test -> all your test
package.json -> all your dependencies
index.js -> where everything start, your server instance etc

因此,您需要将业务逻辑放入控制器中。模型可以用来添加触及db值等的逻辑。