客户端访问服务器,服务器对客户端发来的数据做一个处理之后响应回去
1.客户端访问服务器
通过http协议去访问
什么是http协议呢? 超文本传输协议
请求的话呢有一个请求体和请求体:
请求头:键值对保存客户端的信息
请求体:保存post发送的信息
1.服务器会处理客户端发来的请求 将浏览器发送到服务器的数据封装成一个Request对象
2.然后再执行回调函数createServe将上一步封装好的对象赋值给第一个参数req
3.在回调函数中通过req可以获得本次请求中浏览器向服务器发送的数据

代码实现:
// 1.导入http模块
// 它是一个内置模块,返回的是一个对象
const http = require('http')
// 2.创建一个服务
// 这个服务就是用来接收来自客户端的http请求 并且可以处理这个请求
// 这个方法需要传入1个回调函数 两个形参:req res
// 这个回调函数 在服务接收到来自客户端的http请求的时候 就会自动执行
const serve = http.createServer((req, res) => {
console.log(`接收到了来自客户端${getClientIp(req)}请求`);
res.end('Hello node.js')
});
// 3.开启这个服务
// 监听:
// 参数1: 服务工作的端口号
// 参数2:回调函数 在服务器开启以后自动执行
serve.listen(8000, () => {
console.log('服务成功开启');
})
function getClientIp(req) {
return req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;
};
端口类似于生活中去医院看病的 具体窗口,如付款窗口,每一个窗口发挥着不同的作用 ;IP就是 医院地址了
需重点掌握几个方法:
a. req.headers 获取本次请求 客户端发送到服务端的请求体消息
b. req.url 获取本次请求 客户端请求的URL部分 以'/'开头 如果没有URL 值就是'/'
c. req.method 获取本次请求 客户端请求服务端的HTTP方法get/post
2.服务器对客户端发来的数据做一个处理之后响应回去

// 1.导入http模块
// 它是一个内置模块,返回的是一个对象
const http = require('http')
const serve = http.createServer((req, res) => {
console.log(`接收到了来自客户端${getClientIp(req)}请求`);
res.setHeader('Content-Type', 'text/html;charset=utf8')
// write方法向浏览器写入数据 直接收字符串和Buffer数据
res.write('<h1>王小美</h1>');
// 设置响应状态码
res.statusCode = 200;
// end方法代表本次请求结束了,一定要写的
// 可以传递参数:表示结束并将数据追加到响应体中
res.end('Hello node.js');
});
serve.listen(8000, () => {
console.log('服务成功开启');
})
function getClientIp(req) {
return req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;
};
重点掌握:
响应头:
Content-Type: 告诉浏览器 服务器发给你的是什么数据类型
还可以告诉浏览器文本的编码格式
text/html 服务端给浏览器的数据是html 浏览器就会按照html解析
text/plain 服务端给浏览器的数据是纯文本 浏览器就会原样显示
res是response的缩写,意为响应
req是request的缩写,意为请求
本文介绍了如何使用Node.js创建一个HTTP服务器,处理客户端的请求并作出响应。主要内容包括理解HTTP协议,客户端通过请求头和请求体发送信息,服务器如何封装Request对象并调用回调函数进行处理。在代码示例中,展示了如何获取客户端IP,设置响应头,写入响应内容以及结束响应。重点关注的方法有req.headers获取请求头,req.url获取请求URL,req.method获取HTTP方法。

被折叠的 条评论
为什么被折叠?



