本文已参与[新人创作礼]活动, 一起开启掘金创作之路。
前言
http模块 学习进度 一览:
request请求: 访问路径,方法以及消息体 (✔)response响应: HTTP状态码以及消息体···server.on()的相关参数 进行错误、超时、连接·····等等情况的处理
在前文,我们已经学习了request的相关内容,本篇让我们继续学习response。
从Node.js的官方描述中 《HTTP传输解析》一文我们可以了解:response 对象。它是一个 ServerResponse实例,而 ServerRespose 又是 WritableStream。它包含了很多方法可以用以把数据返回给客户端。
HTTP状态码
解释
百度百科的解释 (HTTP状态码_百度百科 (baidu.com))
HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。
在日常学习生活中我们也经常会碰到它,比如网站消失了的
404 not found
如果你是在校大学生,想必也经常碰到 《青年大学习 网上主题团课》 崩了的情况
504 Gateway timeout
······种种都是http状态码的应用场景
使用
默认返回客户端的 默认状态码是 200。
当然,不是每个 HTTP 返回码必须都是 200,在某些情况下我们希望返回一个不同的状态码,这个时候我们可以设置response 的 statusCode 属性。
// response.statusCode = 404;
// 请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。
// 404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。出现这个错误的最有可能的原因是服务器端没有这个页面。
// response.statusCode = 404;
var http = require('http')
// 创建服务
http.createServer( (req, res) =>{
// 设置状态码
res.statusCode = 404;
}).listen(8888);
当然,你也可以用respond.writeHead()方法来设置状态码,这种使用更加常见
// Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端
var http = require('http')
// 创建服务器
http.createServer( (req, res) =>{
// 编写响应头(不写浏览器不识别)
res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
// 发送响应数据
res.end("<h1>欢迎使用node.js搭建服务</h1>");
}).listen(8888);
// 控制台会输出以下信息
console.log('您的http服务启动在 http://127.0.0.1:8888/');
常见的状态码可以阅读这篇文章(常见状态码详细讲解)
当然,状态码这种,不用在意,自己写的网络接口,肯定是200啦,代码和人有一个能跑就行。
设置响应头
响应头可以通过response的setHeader 属性设置,非常方便。
例如告诉客户端,我们返回的是一个JSON类型数据
response.setHeader('Content-Type', 'application/json');
但是单独设置setHeader太过麻烦了,同样的像我们之前介绍过的简单方法那样,响应头也可以在respond.writeHead里面配置
response.writeHead(200, { 'Content-Type': 'application/json', 'X-Powered-By': 'bacon' });
至于使用哪一种呢
我个人觉得,像那种单独设置的
- response.statusCode
- response.setHeader
更加适合全局配置的情况。
然后呢,像response.writeHead(),特别方便,也适合多变,可以随心所欲的控制响应头。