06-Node.js学习笔记-创建web服务器

时间:2022-06-14 15:06:55

创建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('网站服务器启动成功');