持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情
前言
大家好呀,我是L同学。在上篇文章node知识点总结(三)中,我们学习了node相关知识点,包括path路径模块、路径拼接、获取路径中的文件名、获取路径中的文件扩展名、http模块等相关知识点。今天,在这篇文章中,我们来学习node的其他知识点,包括request请求获取用户提交的get参数、request获取用户提交的额post参数、response响应对象、npm等相关知识点。
request请求获取用户提交的get参数
request请求获取用户提交的get参数步骤:
1、引入node核心模块中的url模块
2、使用url模块中的parse方法,url.parse()
参数1: url地址
参数2: 是否生成query参数对象
实例:url.parse(req.url, true).query
// 引入node核心模块中的url模块
const url = require('url')
const http = require('http');
const server = http.createServer();
server.listen(3000, () => console.log('服务器开启了'));
server.on('request', (req, res) => {
//使用url模块中的parse方法,第二个参数给true代表参数解析成query对象
let obj = url.parse(req.url, true).query
// 输出拿到的参数对象
console.log(obj)
res.end('hello web');
});
request获取用户提交的额post参数
post参数是以数据流的方式提交给服务器的所以无法一次性拿到所有参数。需要监听数据流事件:
data事件:有数据提交给服务器时触发
end事件: 所有数据提交完成时触发
步骤:
1、引入node核心模块中的querystring模块
2、定义一个空字符串变量,用于准备拼接参数
3、监听req的data事件,拼接参数。
4、监听req的end事件,处理参数并完成业务逻辑。
// 引入node核心模块中的querystring模块
const querystring = require('querystring')
const http = require('http');
const server = http.createServer();
server.listen(3000, () => console.log('服务器开启了'));
server.on('request', (req, res) => {
// 定义变量准备拼接参数
let str = ''
// 监听data事件,拼接参数
req.on('data', chunk => {
str += chunk
})
// end事件在所有数据提交完成时触发,监听end事件,开始处理参数。
eq.on('end', () => {
// 输出拼接好的参数
console.log(str)
// 使用querystring的parse方法把str转为对象
let obj = querystring.parse(str)
console.log(obj)
})
res.end('hello web');
});
response响应对象
在服务器的 request 事件处理函数中,如果想访问与服务器相关的数据或属性,可以使用如下的方式:
设置res参数:
完成响应(可以配置页面输出的内容): res.end('hello html')
设置响应体: res.write('1234')
设置响应头: res.setHeader('Author', 'zhangsan')
设置响应状态码: res.statusCode = 200
综合性的设置响应状态码和响应头:
res.writeHead(200, {
'aa': 'bb'
'Author': 'zhangsan'
});
当调用 res.end() 方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式
res.setHeader('Content-Type', 'text/html; charset=utf-8');
// 1. 加载 http 模块
const http = require('http');
// 2. 创建server 对象
const server = http.createServer();
// 3. 监听端口,开启服务器
server.listen(3000, () => console.log('my server running'));
// 4. 注册server的request事件,准备处理浏览器的请求
server.on('request', (req, res) => {
// req request 请求,通过req对象可以获取到所有和请求相关的信息
// res response 响应,通过res对象可以做出响应以及设置一些和响应相关的内容
// // 设置响应头
// res.setHeader('Content-Type', 'text/html; charset=utf-8');
// res.setHeader('Author', 'zhangsan'); // 自己设置响应头,不要用中文
// // 设置响应状态码
// res.statusCode = 200;
// 综合性的设置响应状态码和响应头的方法
res.writeHead(200, {
'Content-Type': 'text/html; charset=utf-8',
'Author': 'zhangsan'
});
// write方法,也可以设置响应体,但是没有做出响应的意思,只是单纯的设置响应体
res.write('1234');
res.write('5678');
// res.end(响应体); // 做出响应
res.end('hello,你的请求我收到了');
// 做出响应之后,不能再有其他代码。
});
npm
npm(node package manager)node包管理器。包就是模块。npm这个工具,在安装node的时候,就已经安装到你的计算机中了。命令行中执行: npm -v ,如果看到版本号,说明安装成功了。
npm的作用就是管理node模块的工具。
- 下载并安装第三方的模块
- 卸载第三方模块
- 发布模块
- 删除已发布的模块
- ....
第三方模块:
- 非内置模块,安装完node,还不能使用的模块,需要从网上下载安装,才能使用的模块
- 第三方模块是个人、公司、组织编写的模块,发布到网上,供我们使用
初始化
使用npm工具之前,必须先初始化。
npm init -y
# 或
npm init
# 然后一路回车
初始化之后,会在项目目录中生成 package.json 的文件。
安装卸载项目模块
下载安装第三方模块:
npm install 模块名
npm i 模块名
卸载模块:
npm uninstall 模块名
npm un 模块名
下载安装的模块,存放在当前文件夹的 node_modules 文件夹中,同时还会生成一个记录下载的文件 package-lock.json。下载的模块,在哪里可以使用:在当前文件夹、在当前文件夹的子文件夹,在当前文件夹的子文件夹的子文件夹。。。怎样使用第三方模块呢?和使用内置模块一样,需要使用 require 加载模块。调用模块提供的方法完成工作(一般好的模块都会用使用文档的)。