创建web服务器
``` //引用系统模块 const http = require('http'); //创建web服务器 //用于处理url地址 const url = require('url'); const app = http.createServer(); //当客户端发送请求的时候 app.on('request',(req,res)=>{ //写入响应状态码 res.writeHead(200,{ 'content-type':'text/html;charset=utf8' }) //获取请求报文信息 //req.headers console.log(req.headers['accept']; //1.要解析的url地址 //2.将查询参数解析成对象形式 var params = url.parse(req.url,true).query; console.log(params.name); console.log(params.age); //获取请求地址 //req.url 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.method console.log(req.method) if(req.method=="GET"){ res.end("GET") }else if(req.method=="POST"){ res.end("POST") } //响应 //res.end('hi,user
'); }); //监听3000端口 app.listen(3000); console.log('服务器已启动,监听3000端口,请访问localhost:3000') ```请求报文
1.请求方式(Request Method)
- GET 请求数据
- POST 发送数据
2.请求地址(Request URL)
``` app.on('request',(req,res){ req.headers //获取请求报文 req.url //获取请求地址 req.method //获取请求方法 }) ```响应报文
1.HTTP状态码
- 200请求成功
- 404请求的资源没有被找到
- 500服务器端错误
- 400客户端请求有语法错误
2.内容类型
- text/plain
- text/html
- text/css
- application/javascript
- image/jpeg
- application/json
HTTP请求与响应处理
1.请求参数
客户端向服务器端发送请求时,有时需要携带一些客户信息,客户信息需要通过请求参数的形式传递到服务器端,比如登录操作
GET请求参数
参数被放置在浏览其地址中,例如:http://localhost:3000/?name=zhangsan&age=20
``` //用于创建网站服务器的模块 const http = require('http'); //用于处理url地址 const url = require('url'); //app对象就是网站服务器对象 const app = http.createServer(); //当客户端有请求来的时候 app.on('request',(req,res)=>{console.log(req.method)
//1.要解析的url地址
//2.将查询参数解析成对象形式
let {query,pathname}= url.parse(req.url,true);
console.log(query.name);
console.log(query.age);
//写入响应状态码
res.writeHead(200,{
'content-type':'text/html;charset=utf8'
})
if(pathname =='/index' ||pathname=='/'){
res.end('<h2>欢迎来到首页</h2>');
}else if(pathname == '/list'){
res.end('welcome to listpage');
}else{
res.end('not found');
}
if(req.method=="GET"){
res.end("GET")
}else if(req.method=="POST"){
res.end("POST")
}
});
app.listen(3000);
console.log('网站服务器启动成功');
<h4>POST请求参数</h4>
1.参数被放置在请求体中进行传输
2.获取POST参数需要使用data事件和end事件
3.使用querystring系统模块将参数转换为对象格式
//用于创建网站服务器的模块
const http = require('http');
//app对象就是网站服务器对象
const app = http.createServer();
//处理请求参数模块
const querystring = require('querystring');
//当客户端有请求来的时候
app.on('request',(req,res)=>{
//post参数是通过事件的方式接收的
//data 当请求参数传递的时候触发data事件
//end 当参数传递完成的时候触发end事件
let postParams = ''
req.on('data',params=>{
postParams +=params;
})
req.on('end',()=>{
// console.log(querystring.parse(postParams))
let params = querystring.parse(postParams);
console.log(params.uname)
console.log(params.password)
})
res.end('ok');
});
app.listen(3000);
console.log('网站服务器启动成功');