【九月打卡】第3天 Node.js工程师学习笔记
2022/9/9 4:53:07
本文主要是介绍【九月打卡】第3天 Node.js工程师学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
课程名称: Node.js工程师养成计划
课程章节: Node 原生实战篇 - 项目基建 - 原生Node 开发Web 服务器
课程讲师: 北瑶
课程内容:
Node原生开发Web服务器
- 使用 Node.js 创建一个 HTTP 的服务器, 并能够接收到客户端发来的请求
- 获取到客户端具体的请求数据, 并根据不同的请求数据进行处理
- 将处理之后的结果, 响应会客户端, 并断开本次连接
使用Node.js创建HTTP服务器
// 引入http模块 var http = require('http'); // 创建服务器 var serve = http.createServer(); // 监听服务器端口 serve.listen(8000, function () { console.log('http://127.0.0.1:8000') }) // 请求处理函数function(形参1,形参2){} // 形参1:request请求对象 获取到当前请求的路径,方法等本次请求的所有信息 // 形参2:response响应对象 发送响应数据 server.on('request', function(request, response) { console.log('服务端收到客户端的请求啦!!!'); // 向客户端页面返回字符串 response.write("hello node"); // 结束响应 response.end(); });
服务器数据响应类型处理
- 乱码问题
因为我们的服务器接受请求处理并响应数据时,并没有指定响应数据的类型,所以出现了乱码;为了解决这个问题, 提供了setHeader
方法
server.on('request', function(request, response) { // 设置响应头 response.setHeader('Content-Type','text/plain;charset=utf-8'); // 设置数据类型及字符集 // 向客户端页面返回字符串 response.write("赟赟"); // 结束响应 response.end(); });
html 解析问题
// 设置响应头 response.setHeader('Content-Type','text/html;charset=utf-8'); // 设置数据类型及字符集
但是我们不能一直将 html 代码写到服务器的方法中, 而是需要建一个 xx.html 文件, 将 html 文件中的内容返回给客户端
var http = require('http'); // 引入文件操作模块 var fs = require('fs'); var server = http.createServer(); server.on('request', function(request, response) { // 读取html文件中的内容 fs.readFile('./xx.html','utf8',function(error,html_data){ // 设置响应头 response.setHeader('Content-Type', 'text/html;charset=utf-8'); // 将html中的内容响应回客户端,结束响应 response.end(html_data); }) });
响应图片等其他静态资源
server.on('request', function(request, response) { // url 属性返回请求的URL字符串 var urls = request.url; if( urls =='/'){ fs.readFile('./xxx.html','utf8',function(error,html_data){ // 设置响应头 response.setHeader('Content-Type', 'text/html;charset=utf-8'); // 将html中的内容响应回客户端,结束响应 response.end(html_data); }) }else if(urls.indexOf('jpg') != -1){ // 判断请求图片 fs.readFile('./xx.jpg',function(error,html_data){ response.end(html_data); }) } }
HTTP的不同请求方式处理
http.ServerRequest
并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作,譬如上传文件。而很多时候我们可能并不需要理会请求体的内容,恶意的 POST 请求会大大消耗服务器的资源。所以 Node.js 默认是不会解析请求体的,当我们需要的时候,只能手动来做。
获取请求类型
var url = require('url'); // 接收客户端向服务器发送的请求 serve.on('request', function (req, res) { console.log('服务端收到客户端的请求啦') // 获取请求类型 var method = req.method; if (method == 'GET') { url_obj = url.parse(req.url, true); // 解析get请求 console.log(url_obj.query); console.log(url_obj.pathname); } else if (method == 'POST') { // 为了支持各种可能的 HTTP 应用,Node.js 的 HTTP API 是非常底层的。 它只涉及流处理与消息解析。 它把一个消息解析成消息头和消息主体,但不解析具体的消息头或消息主体。 var data = ''; // net 模块中的 net.Socket 提供的data及end事件 req.on('data', function (d) { data += d; console.log(data); }) // 绑定end事件,监听数据接受完成 req.on('end', function () { console.log(require('querystring').parse(data)) }) } })
学习心得
通过本章的学习, 对前后端交互有的大致的了解
课程截图
这篇关于【九月打卡】第3天 Node.js工程师学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25Vue3学习:从入门到初步掌握
- 2024-12-25Vue3入门:新手必读的简单教程
- 2024-12-23【JS逆向百例】爱疯官网登录逆向分析
- 2024-12-21Vue3教程:新手入门到实践应用
- 2024-12-21VueRouter4教程:从入门到实践
- 2024-12-20Vue3项目实战:从入门到上手
- 2024-12-20Vue3项目实战:新手入门教程
- 2024-12-20VueRouter4项目实战:新手入门教程
- 2024-12-20如何实现JDBC和jsp的关系?-icode9专业技术文章分享
- 2024-12-20Vue项目中实现TagsView标签栏导航的简单教程