node.js的基本操作(学习笔记二)

目录

一、服务器端基础概念

二、创建Web服务器

三、HTTP协议

1.什么是HTTP协议?

2.报文

3.响应报文与请求报文(2种)

4.请求报文

 5.响应报文

四、HTTP请求与响应处理

1.请求参数

2.GET请求参数

3.POST请求参数

4.路由

5.静态资源

6.动态资源

7.客户端请求途径


一、服务器端基础概念

URL:统一资源定位符,是专门为了识别Internet网上资源而设的一种编址方式。我们之前说的网页地址就是指URL。

URL的组成:

二、创建Web服务器

示例代码:

//引用系统模块
const http = require('http');

//创建Web服务器
const app = http.createServer();

//req --- request的简写,代表请求对象
//res --- response的简写,代表响应对象
app.on('request',(req,res) => {
	res.end('<h1>hi,user</h1>');
});

app.listen(3000);

console.log('服务器已经启动3000端口,请访问localhost:3000');

再使用powshell(cmd也行)切换到项目的目录下,使用nodemon 文件名,即可,再打开浏览器,输入localhost:3000就可以看到结果。

注意: 需要下载node的第三方库nodemon!

代码运行结果如下:

三、HTTP协议

1.什么是HTTP协议?

2.报文

3.响应报文与请求报文(2种)

我们随便打开一个网页使用F12,打开调试工具,Headers中就是请求与响应的报文数据(Response Headers是响应,Request Headers是请求)

Response中就是服务器端响应给客户端的具体内容

4.请求报文

(1)请求方法

           GET请求      请求数据      

           POST请求       发送请求 (通常使用这个,安全!!!)

(2)请求地址 (Request URL)

app.on('request', (req, res) => {    

         req.headers  // 获取请求报文      

         req.url      // 获取请求地址      

         req.method   // 获取请求方法  

});

有以下两段示例代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title></title>
	</head>
	<body>
		<!--
			method:  指定当前表单的提交方式
			action:  指定当前表单的提交位置
		-->
		<form method="post" action="http://localhost:3000">
			<input type="submit" />
		</form>
	</body>
</html>
//引用系统模块
const http = require('http');

//创建Web服务器
const app = http.createServer();

//req --- request的简写,代表请求对象
//res --- response的简写,代表响应对象
app.on('request',(req,res) => {
	if (req.method == 'POST'){
		res.end('post!');
	}else if (req.method == 'GET'){
		res.end('get!');
	}
});

app.listen(3000);

console.log('网站服务器启动成功!!!');

 注:代码没有什么实际意义,只是本人在学习node时实验的示例,用于理解POST与GET请求!

使用POST与GET如何获取客户端的请求地址???

app.on('request',(req,res) => {
	
	if (req.url == '/index' || req.url =='/'){
		res.end("Welcome to homepage!");
	}else if (req.url == '/list'){
		res.end("Welcome to listpage!");
	}else {
		res.end("Not Found!");
	}

});

 想要获取报文?

req.headers  // 获取请求报文    

如果想要获取具体的某一条:

req.headers['accept'] 

 

 5.响应报文

四、HTTP请求与响应处理

1.请求参数

客户端向服务器端发送请求时,有时需要携带一些客户信息,客户信息需要通过请求参数的形式传递到服务器端,比如登录操作。

2.GET请求参数

参数被放置在浏览器地址栏中,例如:http://localhost:3000/?name=zhangsan&age=20

参数获取需要借助系统模块url,url模块用来处理url地址

 上面的URL中:参数使用“=”来分割键值对,“&”来拼接相邻的键值对。

const http = require('http');
 // 导入url系统模块 用于处理url地址 
 const url = require('url');
 const app = http.createServer();
 app.on('request', (req, res) => {
     // 将url路径的各个部分解析出来并返回对象
         // true 代表将参数解析为对象格式
     let {query} = url.parse(req.url, true);
     console.log(query);
 });
 app.listen(3000);

3.POST请求参数

参数被放置在请求体中进行传输

获取POST参数需要使用data事件和end事件

使用querystring系统模块将参数转换为对象格式

// 导入系统模块querystring 用于将HTTP参数转换为对象格式
 const querystring = require('querystring');
 app.on('request', (req, res) => {
     let postData = '';
     // 监听参数传输事件
     req.on('data', (chunk) => postData += chunk;);
     // 监听参数传输完毕事件
     req.on('end', () => { 
         console.log(querystring.parse(postData)); 
     }); 
 });

4.路由

 // 当客户端发来请求的时候
 app.on('request', (req, res) => {
     // 获取客户端的请求路径
     let { pathname } = url.parse(req.url);
     if (pathname == '/' || pathname == '/index') {
         res.end('欢迎来到首页');
     } else if (pathname == '/list') {
         res.end('欢迎来到列表页页');
     } else {
        res.end('抱歉, 您访问的页面出游了');
     }
 });

5.静态资源

服务器端不需要处理,可以直接响应给客户端的资源就是静态资源,例如CSS、JavaScript、image文件。

6.动态资源

相同的请求地址不同的响应资源,这种资源就是动态资源。

7.客户端请求途径

posted @ 2021-03-26 02:51  金鳞踏雨  阅读(24)  评论(0)    收藏  举报  来源