博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript基础学习——Node.js基础模块(二)
阅读量:3917 次
发布时间:2019-05-23

本文共 4673 字,大约阅读时间需要 15 分钟。

一、网络

网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。

二、通信

指通过某种行为或媒介,将信息从某一方准确安全地传送到另一方。

三、网络通信

通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。

四、http协议

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。

五、HTTPS(全称:Hyper Text Transfer Protocoover Secure Socket Layer),是以安全为目标的HTTP通道,采用加密方式进行传输。

六、HTTP协议原理(四次握手)

(1)首先客户端与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。

(2)建立连接后,客户端发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
(3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
(4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

七、请求报文

一个HTTP请求报文由请求行(request line)、请求头(header)、空行、请求数据4个部分组成。

8.响应报文

HTTP响应报文由三个部分组成,分别是:状态行、消息报头、响应正文。

状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

    1xx:指示信息--表示请求已接收,继续处理。
    2xx:成功--表示请求已被成功接收、理解、接受。
    3xx:重定向--要完成请求必须进行更进一步的操作。
    4xx:客户端错误--请求有语法错误或请求无法实现。
    5xx:服务器端错误--服务器未能实现合法的请求。

常见状态代码:

    200 OK:客户端请求成功。
    400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
    401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
    403 Forbidden:服务器收到请求,但是拒绝提供服务。
    404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
    500 InternaServer Error:服务器发生不可预期的错误。
    503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

九、http模块

http.server()用来创建后台服务。

十、http客户端

http模块提供了两个函数http.request()和http.get(),功能是作为客户端向服务器端发送请求。

let http = require('http')let data = [  {    id: '0001',    name: 'Tom',    age: 18  },  {    id: '0002',    name: 'aaaa',    age: 19  },  {    id: '0003',    name: 'bbbb',    age: 20  }];// http.createServer((req, res) => {//   //设置响应头//   /* //   参数1:必选,三位数的http状态码//   参数2:可选,可有可无//   参数3:可选,告诉浏览器我发给你的数据是什么类型的//   *///   res.writeHead(200, {//     //text/plain的意思是将文件设置为纯文本的形式//     //浏览器在获取到这种文件时并不会对其进行处理//     "content-type": 'text/plain'//   });//   res.write(JSON.stringify(data));//   res.end()// }).listen(8000)http.createServer((req, res) => {  console.log(req.url);  res.writeHead(200, {    "content-type": 'text/plain'  });  res.write(JSON.stringify(data));  res.end()}).listen(8000)

1、http.request()

http.request(options,callback)用于发起http请求,接收两个参数,options是一个类似关联数组的对象,里面包含一些请求的参数,callback表示请求后的回调。

注意:用http.request()方法时,必须调用req.end()方法,否则服务器不会收到信息。

const http = require('http')let options = {  host: 'www.baidu.com',  port: 80,  methods: 'get',  path: '/'}let req = http.request(options, res => {  // console.log(res.statusCode);//返回状态码  // console.log(res.headers);  res.setEncoding('utf-8')  res.on('data', res => {    console.log(res);  })})req.end()

2、http.get()

http.get(options,callback),用来更简单的处理GET方式的请求,它是http.request的简化版本,唯一的区别在于http.get自动将请求方法设为GET请求,同时不需要手动调用req.end()。

const http = require('http')let options = {  host: 'www.baidu.com'}let req = http.get(options, res => {  res.setEncoding('utf-8')  res.on('data', rs => {    console.log(rs);  })})

十一、path模块

用来处理路径问题。

1、normalize()方法

将路径转换成该系统环境中都认可的一种统一格式。

var path = require('path')let str = '/goods/classic/type/1'//将路径转换成该系统环境中都认可的一种统一格式let myPath = path.normalize(str)console.log(myPath);

2、join()方法

将两个或多个路径拼成一个绝对路径,并能识别其中的绝对路径和相对路径。

var path = require('path')let p1 = 'path1',  p2 = 'path2/pp',  p3 = 'path3'let myPath = path.join(p1, p2, p3)console.log(myPath);

3、resolve()方法

将一个路径或路径片段的序列解析成一个绝对路径。

let path = require('path')let myPath = path.resolve('path1', 'path2', 'a/b/c')console.log(myPath);

4、parse()方法

返回一个对象,对象的属性表示path的元素。

let path=require('path')let obj=path.parse('/path1/path2/a/b/c/temp.txt')console.log(obj);

十二、URL模块

用于解析和处理URL字符串,提供了三个方法:

    parse:通过此方法,我们可以轻松获取URL中详细的某一部分数据(例如原始url)
    format:与parse方法相反,通过此方法我们可将url对象轻松转换成url字符串
    resolve:通过此方法,我们可以轻松获得当前目录的绝对路径。

1、 parse()方法

    parse方法将URL解析成以下几部分:
      href:原始url
      protocal:url协议
      host:主机
    host中又包含以下信息:
      auth:用户认证
      port:端口
      hostname:主机名
      pathname:跟在host之后的整个文件路径
      search:url中HTTP GET信息,包含了?
      query:跟search类似,不包含?
      hash:片段部分,也就是URL#之后的部分

const url=require('url')let myurl = 'http://www.lovehou.com/about/details?info=aaaaaaaaa&type=info#about';let parseUrl=url.parse(myurl)console.log(parseUrl);

2、format()方法

把对象转换成url字符串。

const url = require('url');let obj = {  protocol: 'http:',  slashes: true,  auth: null,  host: 'www.nodejs.org',  port: null,  hostname: 'www.nodejs.org',  hash: '#about',  search: '?with=query&tag=that',  query: 'with=query&tag=that',  pathname: '/some/url/',  path: '/some/url/?with=query&tag=that',  href: 'http://www.nodejs.org/some/url/?with=query&tag=that#about'}let parseUrl = url.format(obj);console.log(parseUrl);

3、resolve()方法

返回从根目录开始到当前目录的一个绝对路径的url。

var url = require('url');var url1 = url.resolve('/one/two/three', 'four');     // '/one/two/four'console.log(url1);var url2 = url.resolve('http://example.com/', '/one');   // 'http://example.com/one'console.log(url2);var url3 = url.resolve('http://example.com/one', '/two'); // 'http://example.com/two'console.log(url3);

 

转载地址:http://wbvrn.baihongyu.com/

你可能感兴趣的文章
Chrome正在启用HTTP/3,支持IETF QUIC
查看>>
【招聘(西安)】深圳市中兴云服务有限公司.NET工程师
查看>>
C# 8: 可变结构体中的只读实例成员
查看>>
Net5 已经来临,让我来送你一个成功
查看>>
System.Text.Json中时间格式化
查看>>
怎么将SVG转成PNG(.NET工具包编写)
查看>>
.NET Core3.1升级.NET5,坑还真不少...
查看>>
为什么曾经优秀的人突然变得平庸?
查看>>
.NET 5 中的隐藏特性
查看>>
.NET5都来了,你还不知道怎么部署到linux?最全部署方案,总有一款适合你
查看>>
我画着图,FluentAPI 她自己就生成了
查看>>
BenchmarkDotNet v0.12x新增功能
查看>>
使用 .NET 5 体验大数据和机器学习
查看>>
C# 中的数字分隔符 _
查看>>
使用 docker 构建分布式调用链跟踪框架skywalking
查看>>
深度探秘.NET 5.0
查看>>
Github Actions 中 Service Container 的使用
查看>>
别在.NET死忠粉面前黑.NET5,它未来可期!
查看>>
Winform 进度条弹窗和任务控制
查看>>
部署Dotnet Core应用到Kubernetes(二)
查看>>