DAY12 : HTTP前情提要

在实作的过程中,原本想把这篇省略掉,但在往後的实作中,偶而会利用到这些模块与知识,放在这篇,之後文中若有提到的话,就可以大概知道这些是甚麽,在Node中扮演什麽地位,而这篇只是我的重点整理,所以可能没有叙述的这麽详细或是准确,请多多包涵!若有叙述错误的地方在请指教。

Buffer:

Buffer就是一个缓冲区,当前端将数据流(Stream)发送到後端时,会被分割成好几等分,Nodejs会有这个缓冲区用来储存这些被分割的数据,它可以控制Stream的流速。
Stream传到後端的速度比程序读取的速度还来的快时,还没读取或来不及读取的Stream,就会先暂存在Buffer;
Stream到後端的速度比程序读取慢时,也会暂存在缓冲区等达到一定的量之後再给程序读取
通常用阵列来储存,在某些时候也可以限制缓冲区的大小。
Buffer是用来处理二进位的数据,是Node特别设置。Node有String之外还有Buffer这类的数据,是因为它在进行Web开发时常需要与前端数据通信,二进为数据是很常见的,所以Buffer处理完二进位的数据後,所表现出来的是十六进位的字串

//Buffer读取
var fs=require("fs");
fs.readFile("butterfly.txt",(err,result)=>
{
console.log(result);
});

执行结果:
https://ithelp.ithome.com.tw/upload/images/20210923/20140244Z42gytt8Cu.png

就是文字由二进位又被Buffer转换成十六进位,其中应该也是因为二进位太难了,
读取时又臭又长的,改成十六进位是不是明了许多。

readFile:

  • 异步读取文件。
  • 适用体积小的文件,若大容量的文件请使用stream。
  • 若不指定encodin配置,会出现Buffer格式的字符串。
  • 可透过encodingtoStrin转换成文字。
//readFile异步读取
var fs=require("fs");
var data=fs.readFileSync("butterfly.txt",{encoding:"UTF-8"});
console.log(data);

执行结果:
https://ithelp.ithome.com.tw/upload/images/20210923/20140244vF0koJC6vv.png

与butterfly.txt内容是相符的!
若是没有设定encoding,会输出Buffer的格式!! 所以可以透过tostring作转换!

//readFile 异步读取/文字传换
var fs=require("fs");
var data=fs.readFileSync("butterfly.txt");
var data = data.toString('UTF-8',0,100);
console.log(data);

toString(encoding,start,end)
如此一来,也可以转换成文字!但当然会选择第一个直接设置encoding更方便一点!

stat:

  • 获得文件状态(存在或不存在)
  • 在调用write()open()read()前可以先调用stat方法,来判断文件状态。
//stat判断文件是否存在 
var fs=require("fs");
fs.stat("butterfly.txt",(err,result)=>
{ //假设不存在的档案为butter.txt
    if(err)
    {
        console.log("error!!!");
        console.log(err);
    }
    console.log(result);
});

当文件是不存在时(butter.txt),
执行结果:

https://ithelp.ithome.com.tw/upload/images/20210923/20140244xsfZBvqVDb.png

当文件存在时,
执行结果:
https://ithelp.ithome.com.tw/upload/images/20210923/20140244mlQuCtdwHP.jpg

处理HTTP请求:

首先要获取请求的URL、method之类的讯息,这些讯息都封装在require中。

可以在Google中,按[右键]->[检查]->[Network],接着在网址处输入goole.com,按下[Enter]的当下,就会出现以下画面:
https://ithelp.ithome.com.tw/upload/images/20210923/20140244WSJ34XKOMv.png

在[Headers]中可以看到各类的请求与响应头和请求头。
通常GET请求是从後端服务器里获取数据。
而在[Response]中显示的就是HTML的原始码。


<<:  MVC 架构

>>:  Day11 - Gem-rqrcode 或 barby 产 QR Code

Day1. 参赛

前言 我是汉汉老师,於某公立大学电机系、某公立电机研究所毕业的新鲜人。 自大一修了C++的课以後,就...

关於商业视角的时间故事

今天谈一个在商业视角的时间故事。 我的公司盛行加班(勿战),因此有些主管为了体恤加班的同仁,也方便把...

[Day-13] 条件运算子以及switch小练习

这次就要来练习上次学习的switch 这边我想了个题目来练习 那现在就开始练习程序码吧! 题目:利用...

Day 28 - ios 开发实作 (今天还要继续吃吗APP-2)

首先我们介绍一下这个APP的功能。 介绍 这个APP主要会有的功能如下: 计算今天吃的东西类型 计算...

Day 25 - Exception Handling

首先来认识常见的错误类型: EvalError- eval() 执行错误 RangeError - ...