在Day13: HTTP这篇的范例中很常看到使用respone对象,而respone对象就是SeverResponse一个实际例子。
首先设置response的头部讯息可以透过setHeader
或是writeHead
,
前者只能设response header单个属性内容;後者可以一次设置所有的状态码、响应头、状态资讯。
writeHead(statusCode,[, StatusMessage[, headers]]);
而statusCode
,在Node中若不手动设置,状态码的值会默认为200
。
而另一个数字比较常在网路上看到,有没有曾经点进一个网站後,页面上只有一串文字"404 not found"。
图片来源: https://lis7o.com/wp-content/uploads/2016/03/404_file_directory_not_found-1466002402791.png
这个404就是状态码(statusCode),代表是服务器找不到请求,或是遇到非法的路径,
而200是请求成功,且对应的页面会返回。
当然也不只有这两组状态码,只是在服务器中是最常看到的。
可以参考资料:https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Status ,有更多状态码的讯息。
//respone.writeHead
respone.writeHead(200,//状态码
{'Content-Lenghth':'Buffer.byteLenght(body)',//告知浏览器发送的数据类型
'Content-Type':'text/html;charset=UTF-8'});//具体会如何显示数据
在上面程序码旁边已经标注了writeHead中
的各个用意;
另外要提的是headers
各个格式:
'Content-Type':'text/html;charset=UTF-8'
'Content-Type':'text/plain'
'Content-Type':'image/png'
'Content-Type':'image/jpg'
//response body
response.write("<html>");
response.write("<body>");
response.write("<h1> My name is Nicole!!</h1>");
response.write("<p1> response body </p>");
response.write("</body>");
response.write("</html>");
response.end();
由於上面过程会显得繁琐,也可以使response body
作为end的方法的参数作返回,请看下面例子。
//respone end
response.end("<html><body><h1>My name is Nicole!!</h1><p1> response
body </p1></body></html>");
这样就简洁多了!
在每个HTTP请求的最後都会调用end方法,就是结束响应,当客户端请求完成後,都会被调用执行。
如果不调用end的话,客户端就会一直等待
,就像在使用浏览器时,网页一直没跑完的样式,如下图红框处:
红框的x,就代表这个请求还没完成。
response.end([data] , [encoding]);
data
: 代表end方法执行完所要输出的字元,如果指定了data值,代表执行完
response.end()
後,会执行一个response.write()
。
encoding
: 对应data的字符编号。
例子:
使用Day13: HTTP修改一下这篇的其中一个例子
//respone end
var http=require("http");
const sever=http.createServer((req,res)=>
{
res.writeHead(200,{'Content-Type':'text/html;charset=UTF-8'});
res.write('<h1>Welcome Nicole Page!!!</h1>');
res.write('<h2>欢迎来到Nicole网页</h2>')
res.end("<p>Hello My name is Nicole!</p>");
});
sever.listen(3000);
若有使用中文的部分,记得在response.writeHead()
中的header设定UFT-8,不然会出先奇怪的文字喔!
若没有使用中文的话,省略也没关系!
执行结果:
总结:
好的~今天的部分就到这里了~
明天会介绍HTTP服务器的GET请求!
明天见罗!!!!
上一回介绍过 CC: Tweaked Wired Modem 和 Wireless Modem 的网...
https://www.digitimes.com.tw/seminar/mentor_202105...
上一篇:Day 01-引言:Terraform 是个好东西 课程内容与代码会放在 Github 上:...
今天要接着完成部署 GAS 专案并且让 Line Bot 可以简单的回应验证码给使用者。 将先前的 ...
游戏示意 swift - 游戏功能 接下来当我们点击按钮 我们来打个API 并告知道有没有猜对 来看...