基于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
异常处理
- 参数缺失
- 参数类型错误
- 参数值错误
- 记录不存在
- 记录已存在
- 数据库操作异常
- 权限错误
- 基于Express框架的应用层运行的思路
- 基于SSM框架的office应用思路
- Hibernate基于持久层框架的DAO模式应用
- 基于Express框架的会话控制
- 锁在应用层的优化思路
- 锁在应用层的优化思路
- 基于S3C2440的USB摄像头应用简单实现之应用层框架(一)
- 基于express框架的应用程序骨架生成器介绍
- nodejs基于express4+mysql+express-controller的mvc框架
- express框架的路由
- express框架的理解
- 基于TCP/UDP的应用层协议
- express的应用
- 基于网络层和应用层的DDoS攻击
- 基于TCP的应用层协议、与基于UDP的应用层协议分别有哪些?
- 基于.net的可扩展框架设计 - 主体思路
- 基于robotium构建自动化测试框架的一些思路
- 基于现有游戏服务端(java)的数据框架调整思路
- FragmentActivity和Activity的区别
- 【接口测试工具】-SoapUI工具
- mysql授予远程连接的权限
- CSS语法基础
- java注解定义和使用详解
- 基于Express框架的应用层运行的思路
- 笨方法6-17
- Linux中ftp上传下载
- java调用Linux/Windows系统命令
- 深度卷积神经网络用于图像缩放Image Scaling using Deep Convolutional Neural Networks
- Eclipse/MyEclipse 安装后应该更改的设置
- 位运算基本概念及简单运用
- Quartz 定时任务
- MySQL 单个数据库备份还原