基于Express框架的应用层运行的思路

来源:互联网 发布:世界首例网络攻击 编辑:程序博客网 时间:2024/04/25 23:14

项目运行思路

分析了一下午的precise-application-interface项目的代码,整理出来的思路。(只想说:你妈,得废多少脑细胞,都不是妹子干的活儿。)

这里写图片描述

  • 在初始运行之前,通过运行cnpm install 或npm install来安装一下Express及其依赖的模块。
  • 根目录下app.js或index.js是启动文件
  • 查看代码,从package.json(”dev”: “nodemon ./bin/server.js”)进,从哪儿出来
    每个项目都是从package.json开始,然后根据包的引用路径开始读代码,可以查找项目运行命令中cnpm run + "名字"的名字。
  • middlevare.js错误处理
  • log.js日志处理中间件
  • services、controllers和routes.js,请求参数校验
  • 路由的触发

    在app.js文件中通过import router from './src/routes';加载路由模块,在进行参数校验后,通过app.use(router);即可处理发出相应路径的请求。

  • 当用户发出HTTP请求时,代码会做出如下反应:

    1.首先在app.js文件(启动文件,其主要作用:附加中间件、请求参数校验、登录鉴权等)中,判断请求路径和请求方法是否合法(也就是服务器里面有没有这样的url),如果不合法抛出相应错误,如果合法,通过req.checkBody();转到第2步。
    2.在validator.js文件中,对用户所发出的请求中带有的参数进行校验。(参数是否为必选,即请求参数是否有必选项)。notEmpty=true;是必选;optional=true;为可选;
    3.如果上面所有校验都通过了,触发app.js中的所挂载在应用路径上的路由(import router from './src/routes';app.use(router);),找到处理相应请求所在的文件(一般在controller文件夹中)。一般在处理请求的函数的参数为req,res,next三个参数,其中

    req.body获取的是请求时body里面的数据,req.params获取请求url中路由参数,如\user:userId,req.params.userId就可以获取url中的路由参数;而req.query获取的是url查询参数,即?后面的参数,如/user/:userId/blood-fat?test_id=,ruq.query.test_id就可以获取查询参数test_id的值。

    4.根据请求参数返回相应的信息。

    • 根据业务层相应请求url,返回的结果和对不同错误返回的相应处理结果,返回相应的数据信息
    • 根据数据库操作文件中相应请求返回的信息数据信息进行处理(一般在services文件夹中)。

参数校验

  • 当写“添加/新增”类接口时,如果不是必填项,变量值可以是null,此时在validate里面可以不加校验。

    如下图,type,description和parentId在添加标签分类时不是必选项,此时要允许三者的值要为null


这里写图片描述

异常处理

  • 参数缺失
  • 参数类型错误
  • 参数值错误
  • 记录不存在
  • 记录已存在
  • 数据库操作异常
  • 权限错误
原创粉丝点击