上一章节,我们搭建了nodejs的server端开发环境,本章节我们就开始对http请求做一些预处理…
本篇幅主要的技术点
[❌] 使用node原生http模块搭建http-server
[❌] 使用nodemon处理热加载
[❌] 使用cross-env处理不同操作系统环境变量(通过nodejs的process全局变量的process.env.NODE_ENV就可以获取)
[✔] 使用querystring处理get请求的参数
[✔] 使用promise的方式获取post请求body参数的获取
[✔] 使用es6 Class的方式定义响应数据的基础格式,然后对成功响应和失败响应extends基础格式
[❌] mySql常用操作汇总
[❌] nodejs链接本地mysql数据库响应客户端请求
[❌] 登陆校验/登陆信息存储
[❌] nodejs链接redis数据库
[❌] nginx的配置反向代理
[❌] 日志管理
[❌] 信息安全(sql注入/xss攻击/md5信息加密)
模块拆分

- bin/
www.js为整个node应用的主入口,简称app,将app拆封成:- 跟http-server相关的逻辑(只关注http-server本身的配置)
- 处理具体后台业务的serverHandler(req对象有req.method可以获取求情类型,req.url可以获取请求的url地址)
1 | //http-server 这里的逻辑和具体业务没有关系 |
serverHandler预处理http的get请求:
通过req.url和req.method可以分别获取浏览器客户端发送请求的地址信息和请求类型信息:
1 | // serverHandler |
设置http request请求头的content-type
1 | // 获取请求头的content-type |
通过promise的方式封装post请求获取body参数
1 | //---------------------------第三步 通过promise的方式封装post请求获取body参数--------------------------- |
根据业务处理路由
1 | // ---------------------------第四步 引入路由处理,然后根据req请求的类型和参数类型处理不同的逻辑------------------- |
处理响应数据的数据结构
- serverHandler中,按照业务又拆分成:
处理博客的相关路由/用户相关的路由/以及路由未命中的404异常 - 为了再响应客户端请求时,返回的数据能够格式统一,于是封装了一个responseModel。包括data,message和state三个参数这样响应的时候就能统一返回一个固定的格式:
1 | // 基类 |
封装api跟mysql数据库交互查询数据
- 在博客的相关路由和用户相关路由中又根据各自的业务,设计RestFul接口Api来处理具体的业务和数据返回,然后将api接口返回的数据通过SuccessModel进行包装。
1 | const { |
总结
到此位置,我们一步一步的剥离server端的功能,从app.js(搭建http服务和处理请求的serverHandlder)===>serverHandler(预处理get/post请求,处理路由和异常的404,当然也可以处理cookie/session等)===>router(根据业务拆分不同的路由)===>api(在不同的路由中又根据不同的业务封装api和数据库交互)。看似很复杂,但是一步一步又很合理…