分析了一下午的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文件夹中)。如下图,type,description和parentId在添加标签分类时不是必选项,此时要允许三者的值要为null