创建nodejs服务器的步骤:
1、导入http模块
2、创建http服务器对象
3、给服务器对象注册(绑定)request事件
(1)对不同请求方式进行处理
(2)路由:对不同的请求路径进行处理
(3)处理请求参数
(4)给客户端发送响应信息
app.on('request',(req,res)=>{
})
4、开启端口监听我们今天就按照这个步骤来学习nodejs服务器的知识。
一、NodeJS服务器开发
1、学习服务器开发的目的
- 可以和后端程序员进行紧密的配合
- 让业务前置
-
扩展知识面
2、服务器的主要工作
- 实现项目的业务逻辑
- 实现数据的增删改查(CRUD)
3、使用Node创建服务器示例
- 引入http模块
- 创建服务器对象
- 定义请求和响应
- 监听端口号 本地机的域名:localhost 本地机的IP地址:127.0.0.1
//1、引入http模块
const http= require('http');
//2、创建Web服务器对象
const app=http.createServer()
//3、定义请求和响应
/*
回调函数中的参数
req(request):表示请求对象,存放了客户端的所有请求信息
res(respone):表示响应对象,服务器端通过该对象向客户端发送响应信息
*/
app.on('request',(req,res)=>{
res.end('Hello Word')
res.writeHead(200,{
// 'content-type':'text/plain'//相应信息是纯文本格式
'content-type':'text/html;charset=utf8'//相应信息是纯文本格式
})
});
//4、监听端口号:指定服务器所使用的端口号
app.listen(8080)//监听3000端口
console.log('服务器已启动,监听8080端口,请访问localhost:8080');
//127.0.0.1 本地机的IP地址
4、http协议
HTTP(Hyper Text Transfer Protocol)超文本传输协议
- HTTP协议规定了如何从网站服务器传输超文本到本地浏览器
- HTTP协议基于客户端服务器架构工作,是客户端(用户)和服务器端(网站)请求和应答的标准
- HTTP协议可以使浏览器更加高效,使网络传输减少
- HTTP协议不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
5、关于http请求和响应
- 请求消息:客户端向服务器端发送请求时所携带的数据块
- 响应消息:服务器端响应客户端请求时所携带的数据块
- 客户端向服务器端发送请求的类型
⭐get请求:在浏览器的地址栏直接输入请求地址或在页面使用超链接(a标签)发起的请求,默认都是 get请求
⭐post请求:在<form>标签的method属性中指定为post时,请求方式就是post
get请求 :
post请求:
- get请求和post请求的区别
⭐get请求的参数是通过URL进行传递。post请求的参数包含在请求体中
⭐get请求不安全,不能用来传输敏感信息;post请求相对比较安全
⭐get请求在url中传递的参数是有长度限制的(不同的浏览器限制的长度不同),post请求对长度 没有限制
⭐get请求参数会被完整的保留在浏览器的历史记录中;post请求参数不会再浏览器中保留
⭐get请求使用url编码(百分号编码);post请求支持多种编码方式。
⭐get请求在浏览器中可以被主动缓存(cache);post请求不会
⭐get请求在浏览器回退时是无害的;post请求在浏览器回退时会再次向服务器提交数据
⭐get请求时浏览器会把请求头(http header)和数据(data)一起发送出去;
⭐post请求时浏览器会先发送请求头(http header),服务器响应后(状态码100),浏览器会再次发送数据(data),服务器器会给客户端返回状态码200
- 服务器收到用不同请求方式发送的请求时,如何分开处理(服务器如何区分get请求和post请求)通过对请求对象(request)的method属性进行判断,来获取用户的请求方式
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥服务器端代码
//1、引入http模块
const http= require('http');
const { homedir, hostname } = require('os');
//2、创建Web服务器对象
const app=http.createServer()
//3、定义请求和响应
/*
回调函数中的参数
req(request):表示请求对象,存放了客户端的所有请求信息
res(respone):表示响应对象,服务器端通过该对象向客户端发送响应信息
*/
app.on('request',(req,res)=>{
if(req.method == 'POST'){
res.end('post')
}else if(req.method == 'GET'){
res.end('get')
}
console.log('请求方式:',req.method);
console.log(req.headers['host']);
//设置响应头信息
res.writeHead(200,{
// 'content-type':'text/plain'//相应信息是纯文本格式
'content-type':'text/html;charset=utf8'//相应信息是纯文本格式
})
res.end('<h1>你好我是服务器端</h1>')//end()方法:断开与客户端的联系同时向客户端发送信息
});
//4、监听端口号:指定服务器所使用的端口号
app.listen(8080)//监听3000端口
console.log('服务器已启动,监听8080端口,请访问localhost:8080');
//127.0.0.1 本地机的IP地址
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥HTML页面(使用get请求)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="http://localhost:8080" method="get">
<label>
用户名:
<input type="text" name="username">
</label>
<br><br>
<labe