HTTP
HTTP模块
第一个板块:简单介绍HTTP模块用法
//第一步:引入模块http模块 是核心模块
var http=require('http')
//第二步:创建http对象
var svr=http.createServer(function(){
//第四步:当来请求的时候我所要执行的任务,在createServer中加上回调,这个回调函数就是我所要执行的任务,createServer的作用就是当有请求的时候,执行function这个里面的代码
});
//第三步:监听端口
svr.listen(3001)
第二个板块:介绍请求对象和响应对象
//第一步:引入模块http模块 是核心模块
var http=require('http')
//第二步:创建http对象
var svr=http.createServer(function(req,res){
res.write('hellow,hug')
res.end()//比搜啊是写完
//现在只说回调函数中的参数,及function中的参数
//console.log(a)//通过打印我们知道a,b是一个对象,而且是http模块官方为我们写好的对象 既然我们证明a,b是官方写好的对象,我就可以告诉大家
//a(function中的第一个参数表示请求对象)一般情况下我们用req代表请求对象request 是继承自一个读流
//b(function中的第二个参数表示响应对象)一般情况下我们用res代表响应对象response 是继承自一个写流
});
svr.listen(3001)
第三个板块:发送index.html文件
var http=require('http')
var fs=require(''fs);
var svr=http.createServer(function(req,res){
//通过fs读网页
fs.readFile('文件路径',function(err,data){
res.write(data)
res.end()
})
});
svr.listen(3001)
第四个板块:请求对象的两个方法url method
var http=require('http')
var fs=require('fs');
var url=require('url')
var qs=require('querystring')
var svr=http.createServer(function(req,res){
//当点击提交的时候,我来解析出GET提交的数据
if(req.url!=='/'){
var up=url.parse(req.url)
var qsq=qs.parse(up.query)
console.log(qsq.user)
}
//既然req对象故req就要有什么能干什么
//1、url 表示请求的url地址 console.log(req.url) 打印出'/',故当前的url就是'/'
//2、method http请求方法post get delete put update Head
//console.log(reg.method)
fs.readFile('文件路径',function(err,data){
res.write(data)
res.end()
})
});
svr.listen(3001)
第五版块:解析GET请求
var http=require('http');
var url=require('url')
var qs=require('querystring')
var fs=require('fs');
var svr=http.createServer(function(req,res){
//想判断表单提交还是网址请求
//如果是正常网址请求,则直接发送index.html文件
fs.readFile('文件路径',function(err,data){
res.write(data)
res.end()
})
//如果有GET请求 普通请求是'/' get请求'/?'
var up=url.parse(req.url).query
if(up!==null){
qs.parse(up).user
}
})
svr.listen(3001)
//4、使用http模块显示两次页面 页面跳转
//1>在第一个页面中链接、点击链接进入第二个页面
//2>提示:需要两个HTML页面
var http=require('http')
var fs=require('fs')
var svr=http.createSrver(function(req,res){
fs.readFile('文件路径',function(err,data){//一般有事件就没有err,其他都有
res.write(data)
res.end()
})
fs.readFile('第二个页面',function(err,data){
res.write(data)
res.end()
})
})
svr.listen(3001)
post表单提交
//js代码
var http=require('http');
var fs=equire('fs');
http.createServer(function(req,res){
if(req.method=="POST"){
//因为req是请求对象,且继承自读流 data end俩事件 //如何使用解析post数据
req.on('data',function(chunck){
console.log(chunck.toString())
})
}else{
fs.readFile('HTML路径',function(err,data){
res.write(data)
res.end()
})
}
}).listen(3001)
//html代码
//响应favicon
var http=require('http');
http.createServer(function(req,res){
if(req.url==='/favicon.ico'){//当请求favion.ico时,返回响应图片
//favicon.ico浏览器自动请求,显示在浏览器标签中的图片
//故favicon.ico是一个ico格式的图片 png jpg jepg
fs.readFile('图片路径',function(err,data){
//res.setHeader('content-type','image-icon')
res.write(data)
res.end()
})
}else{
fs.readFile('html路径',function(err,data){
res.write(data)
res.end()
})
})
//只有发送了html文件才会请求favicon
http的登录注册
js代码
var http=require('http')
var fs=require('fs')
var qs=require('querystring')
http.createServer(function(req,res){
if(req.url==='/'&&req.method==='GET'){
fs.readFile('总页面',functio(err,data){
res.write(data)
res.end()
})
}else if(req.url==='/denglu'&& req.method==='GET'){
fs.readFile('登录页面',function(err,data){
res.write(data)
res.end()
})
}else if(req.url==='/zhuce' && req.method==='POST'){
fs.readFile('注册面',functio(err,data){
req.on('data',function(data){
fs.appendFile('./userDatabase',data.toString(),function(){
res.write('注册成功')
res.end()
})
})
}else if(req.url==='/denglu'&&req.method==='POST'){
req.on('data',function(data){
//从数据库中读取注册的内容,然后和注册的数据进行匹配
fs.readFile('自动创建的内容',function(err,data){
})
})
}
//if(req.method=='POST'){
//req.on('data',function(data){
//fs.appendFile('./userDatabase',data.toString(),function(){
//res.write('注册成功')
//res.end()
//})
//})
//}else{
//fs.readFile('注册页面html',function(err,data){
//res.write(data)
//res.end()
//})
//}
}).listen(3001)
注册页面html
登录页面html
登录注册页面
http协议:
请求部分:请求行、请求头、请求体
响应部分:状态码、响应头、响应体
post和get的区别:
1、post安全性高 get安全性低
2、post比get的传输量大
3、get追加到url后面,post不会追加到url后面