http模块
//1.导入http模块
const http = require("http");
//2.创建服务器
//2-1.调用createServer获取到服务器实例对象
const server = http.createServer();
//2-2.监听端口,启动服务
server.listen(8080, () => {
console.log("http://127.0.0.1:8080");
});
//2-3.监听服务端的"request"事件(客户端的请求事件)
//() => void:客户端发来的请求
//request:请求的所有信息
//resovle:响应的所有信息
server.on("request", (request, resovle) => {
//响应客户端
resovle.write('aaaaa')
//断开服务
resovle.end()
});
解决中文乱码问题
原因:客户端不理解服务端发过来的数据类型
解决:配置请求头
//"Content-type":内容类型
// text/plain:纯文本类型
// charset=utf-8:字符编码
resovle.setHeader("Content-type","text/plain;charset=utf-8")
resovle.write('中文')
// text/html:html类型
resovle.setHeader("Content-type","text/html;charset=utf-8")
resovle.write('<h1>中文</h1>')
读取html文件
const fs = require("fs");
//读取文件
fs.readFile(路径,字符编码,(报错信息,文件类容)=>{})
//写入文件
fs.writeFile(路径,写入类容,(报错信息) => {})
if(request.url == '/'){
fs.readFile('./index.html','utf8',(err,data) => {
//遇到图片会再次请求
resovle.write(data)
resovle.end();
})
}else{
fs.readFile('./a.png',(err,data) => {
// end传值就会先write(data)
resovle.end(data);
})
}
请求方法
GET:获取服务器资源
POST:向服务器提交数据
PUT:向服务器写入资源,如果存在则替换
DELETE:删除资源
HEAD:获取服务器响应头
OPTIONS:询问服务器所支持的请求方法
request.method 获取到请求方法
get
使用 url 模块
if(request.method == 'GET'){
//请求头传参
// url.parse(处理地址,true:将query设置为对象)
console.log(url.parse(req.url,true).query.id);
}
post
if(req.method == 'POST'){
let val = ''
//请求体传参
//因为http模块是基于net模块的,所以可以直接使用net的事件
req.on('data',(d) => {
val += d
})
//所有数据全部发完了
req.on('end',() => {
//数据额转移处理
//querystring模块
console.log(querystring.parse(val));
})
res.end()
}