浅谈nodejs中HTTP模块应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了浅谈nodejs中HTTP模块应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4569字,纯文字阅读大概需要7分钟。
内容图文
![浅谈nodejs中HTTP模块应用](/upload/InfoBanner/zyjiaocheng/1335/546f0f92f1ec4312b9634f30b329f7c5.jpg)
这里给大家分享下后端人员如果利用nodejs对数据的一些处理情况 适用于初学者使用 大牛勿喷
给大家分享下主要后端思想部分代码,前端部分就不展示了
1 const http = require("http"); 2 const fs = require("fs"); 3 const url=require("url"); 4 const path = require("path"); 5 const util = require("./util"); 6 const Mock = require("./src/app/mock/node_modules/mockjs"); 7 8//创建一个服务 9 let arr = [];//用来存放下面建立的json文件的数据 10 const server = http.createServer((request, response) => { 11//首先我们会接受静态请求和接口请求 通过封装函数来实现对其不同的操作 12//首先我们对请求进行分类 13 let filePath = request.url == "/" ? "login.html" : url.parse(request.url).pathname; 14//console.log(filePath) 15if (path.extname(filePath)) { 16//存在后缀就是静态资源文件请求 17 util.fileRead(path.join("./src", filePath), response) 18 } elseif (filePath == "/api/login") { 19 20//声明一个对象给前端返回后端处理的数据请求结果 21 22 let opj = { 23 code: 1, 24 msg: "请求成功" 25 } 26//接受前端给我发过来的请求体 27 util.getData(request, (data) => { 28 console.log(data, "前端请求数据结果") 29//登录的ajax请求 30//我们利用一个json文件模拟本地数据库 31//首先判断我们这个数据库存在不存在 32if (fs.existsSync("./data.json")) { 33//存在的情况下 34//和数据库的数据进行比较 35//读取数据库文件资源 36 let dataAll = JSON.parse(fs.readFileSync("./data.json", "utf8")); 37 data = JSON.parse(data) 38//console.log(data, "dengluqingqiu............") 39//检验是不是账号密码不对 40 let flag = dataAll.find(item => { 41return item.user == data.user && item.pwd == data.pwd; 42 }); 43 let flag1 = dataAll.find(item => { 44return item.user == data.user; 45 }) 46//console.log(flag, "**************") 47//检测是不是这个名字就不存在了 48if (!flag) { 49//找不到证明验证失败 50 opj.code = 0; 51 opj.msg = "用户名或者密码输入错误" 52 } 53if (!flag1) { 54 opj.code = 0; 55 opj.msg = "该用户没有被注册" 56 } 57 58 } else { 59//不存在的情况下 60 opj.code = 0; 61 opj.msg = "该用户没有被注册" 62 } 63//返回后端处理结果 64//console.log(JSON.stringify(opj)) 65//console.log(opj, "--------------------") 66 response.end(JSON.stringify(opj)) 67 }) 68 } elseif (filePath == "/api/register") { 69//声明一个对象给前端返回后端处理的数据请求结果 70 let opj = { 71 code: 1, 72 msg: "注册成功" 73 } 74//注册页面发来的ajax请求 75//接受ajax传过来的数据 76 util.getData(request, data => { 77//console.log(data, "前端请求数据结果") 78 console.log(data, "这里") 79 data = JSON.parse(data); 80 let f = arr.some(item => { 81return item.user == data.user 82 }) 83if (!f) { 84 arr.push(data); 85 } 86//首先在这个请求中我们还是利用一个json文件代替数据库 87//判断这个文件是不是存在 不存在创建 88if (!fs.existsSync("./data.json")) { 89//不存在的情况下 90//创建 91if (arr.length) { 92 fs.writeFileSync("./data.json", JSON.stringify(arr)); 93 } 94 } else { 95//存在的情况下 96//获取这个文件收据进行遍历 97 let read = JSON.parse(fs.readFileSync("./data.json", "utf8")); 98 let flag = read.some(item => { 99return item.user == data.user 100 }); 101if (flag) { 102 opj.code = 0; 103 opj.msg = "该用户已被注册过" 104 } 105 fs.writeFileSync("./data.json", JSON.stringify(arr)); 106 } 107 response.end(JSON.stringify(opj)) 108 }) 109110 } elseif (filePath === "/api/main") { 111 util.getData(request,data=>{ 112//console.log(data,"**********");113 let {page,limit}=data; 114//利用mock随机生成图片115 let images=Mock.Random.image("200x200","#f00","chen"); 116//利用传过来的参数随机生成一个数据给前端返回回去117 let mockData=Mock.mock({ 118 [`list|${limit}`]:[ 119 { 120 title:‘@ctitle‘, 121 ‘id|+1‘:(page-1)*limit, 122 img:images 123 } 124 ] 125 }); 126//将这个随机创造的数据返回给前端127 response.end(JSON.stringify(mockData)) 128 }) 129 } 130}); 131132//监听这个服务133 server.listen(8000, () => { 134 console.log(server.address().port) 135 })
其中上述代码用到个几个封装如下 上述代码依然可以优化 怕优化太多不易理解 有能力的同学可以自己优化下
1 const url = require("url"); 2 const fs = require("fs"); 3 module.exports={ 4 fileRead(rootPath,response){ 5//此函数是对文件的读取 与判断文件是否存在滴 6if(fs.existsSync(rootPath)){ 7//文件存在的情况 读取返回 8 fs.readFile(rootPath,(err,data)=>{ 9if(err) throw err; 10 response.end(data.toString()) 11 }) 12 }else{ 13//文件不存在的情况下 改状态码14 response.ststusCode=404; 15 response.end() 16 } 17 }, 18 getData(request,callBack){ 19//第一个参数是请求体 第二个参数是回调函数20//封装一个函数用来判断是get请求还是post请求21if(request.method==="POST"){ 22 let data=""; 23 request.on("data",chunk=>{ 24 data+=chunk; 25 }); 26 request.on("end",()=>{ 27 callBack(data) 28 }) 29 }elseif(request.method=="GET"){ 30//注意这里第二个参数加个true可以 很有灵性31//将page=1&limit=15转换成对象 方便了后端人员的数据处理32 let data=url.parse(request.url,true).query; 33 callBack(data) 34 } 35 } 36 }
其实主要思想也就那几个
首先 我们需要创建一个服务 然后在这个服务中判断一下我们接受的http都是那些
无非就是两种 一种是静态资源的加载 也就是我们的html页面的加载和css js的一些引入加载
另一种就是我们的一些ajax接口的请求 通过前端人员给我们发送过来的请求 然后我们对其进行
处理后给前端返回处理后的结果 这时前端人员就可以根据我们的结果进行一系列的页面操作
上述代码 还有不完整处 有时间在补充
没有对icon图标的处理 这里如果浏览器加载一次后就不会继续像服务器发送请求了
会从缓存中读取的
还有没有判断 既非接口也非静态文件资源的情况
也就是我们上网时常见的404页面走丢了那类网页 所以这里只需加载一个html页面即可
整体而言也就这些了 欢迎有不同想法或者思路的人在下方指出 您的评价是我进步的阶梯
原文:https://www.cnblogs.com/cq1715584439/p/10759055.html
内容总结
以上是互联网集市为您收集整理的浅谈nodejs中HTTP模块应用全部内容,希望文章能够帮你解决浅谈nodejs中HTTP模块应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。