一,响应报文的产生
对于客户端发送的每个请求,服务器端需要告诉客户端,你这个请求到底是成功的,还是失败的。
上节课,主要讲的是请求报文,其实是一个对象,里面包含了请求的所有内容信息。
而这里,服务器端产生的响应报文,则是针对本次请求,所整合的所有服务器响应信息。比如客户端发送了请求,请求报文是生成了,那客户端如何知道请求成功还是失败?这就需要服务器来告诉客户端了。
可以在network里面查看状态码:此时是200
之前在操作请求报文时,都是对请求对象req进行操作,那么现在的响应,则需要对res对象进行操作了。
二,响应头中设置状态码
//定义服务器响应状态码
res.writeHead(500)
这样之后运行app.js文件,创建服务器,然后刷新页面,网页的状态码就会变成500了。当我们不设置参数或者没有写这句代码时,默认为200,表示请求成功。
三,设置响应的内容解析格式。
默认情况下,是以文本显示的,所以之前的响应头信息是直接以文本的形式显示在 浏览器上面
现在更改为:
//用于创建网站服务器的模块
const http=require('http')
//app对象就是网站服务器对象
const app=http.createServer()
//当客户端有请求来得时候,执行这个事件
app.on('request',(req,res)=>{
//获取请求方式,保存在require对象的method属性中,
//它的属性值就是这次请求所用的请求方式
//req.method
// console.log(req.method)
//获取请求地址
//req.url
//获取请求报文信息
//req.headers
// console.log(req.headers['accept'])
//定义服务器响应状态码和内容解析格式,
//两个参数,第一个状态码,第二个是对象,实际上存储的就是响应头里面的信息
res.writeHead(200,{
'content-type': 'text/html;charset=utf8',
//以html格式解析响应内容,且编码格式为utf-8
})
//根据用户访问的地址不同,显示不同的界面
// console.log(req.url)
if (req.url == '/index' || req.url == '/'){
res.end('<h3>我是成功请求之后的响应内容</h3>')
}else if(req.url == '/list'){
res.end('welcome to listpage')
}else{
res.end('not found')
}
//根据不同的请求方式,服务器做出不同的响应
if(req.method == 'POST'){
res.end('post')
}else if(req.method == 'GET'){
res.end('get')
}
// res.end('<h2>hello world</h2>')
})
//还要监听端口,才能向外界提供服务
app.listen(3000)
console.log("网站服务器启动成功")