node.js 系列8Http 模块

Http模块

http模块可以帮助我们创建服务器,目前有很多开源的web服务器,比如nginx,node.js等等。

初体验在这里插入图片描述

在这里插入图片描述

这样我们的本地服务器,127.0.0.1:8080已经启动。在这里插入图片描述

使用nodemon可以监听文件的变化,从而不用每次修改代码而要重新手动启动服务器。

在这里插入图片描述
接受一个requestListener,拿到的req,res就是请求参数以及返回对象,request,response的缩写。

第二种启动服务i器的方法 new http.Server

在这里插入图片描述
这种的本质跟http.createServer的本质是一样的,源码都是直接new Server()。

监听函数在这里插入图片描述

接受三个参数,端口号,主机,还有回调函数。在这里插入图片描述
这里其实是做了重载。
主机可以传入localhost,127.0.0.1和0.0.0.0它们的区别是
在这里插入图片描述

request对象,url内置对象, qs模块

也就是req对象,封装了客户端给我们服务器传递过来的所有信息,主要是url,在这里插入图片描述
在这里插入图片描述
可以看到url,请求方式,请求头等等。

拿到url就可以判断当前是哪个网址,从而响应不同的内容。我们可以使用node内置模块,url
在这里插入图片描述
就可以准备的拿到pathname,query这些东西。还能使用querystring模块,这个模块专门对get请求的query模块做处理在这里插入图片描述
使我们可以以对象的形式拿到数据。

method请求方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果传过来的是字符串,就可以用utf-8,如果是二进制啥的,就得用binary解码
在这里插入图片描述
因为在http中传输,是string类型,所以可以用json.parse转换。

req.headers

在这里插入图片描述
content-type是请求携带的数据体的类型,content-length,携带数据体的长度,keep-alive,
在这里插入图片描述
accept-encoding,告知服务器客户端支持的文件压缩格式,比如gzip

小结,http模块可以创建服务器,通过http.createServer((req,res)=>{})或者new Server(()=》{}),这两个本质都是一样的,都是new Server的。req这个对象一般封装了所有客户端传过来的数据,比如url,method,headers这些等等,url我们可以使用node内置的url模块来解析我们的url,可以使用querystring模块来解析我们的query等等,post请求的body我们得通过req.on(data,()=>{})拿到,因为http模块的body是通过流来进行传输的,此时我们的data拿到的是二进制buffer数组,因为拿到的是流,我们可以根据不同的数据通过req.setEncoding(utf-8)来解码不同的数据,从而拿到post请求的body数据

返回响应结果

response对象

在这里插入图片描述

在这里插入图片描述

res.end(xxx)的本质是,先调用res.witre(写入东西),然后res.end(callback)

响应码在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

响应header的设置

在这里插入图片描述
在这里插入图片描述
键值对设置,一次设置一个
这个响应Header的设置还是很重要的,
在这里插入图片描述

正常设置text/plain,浏览器不会认识html标签,会认为是字符串,在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http中发送网络请求

get请求
在这里插入图片描述
在这里插入图片描述

post请求

在这里插入图片描述

post请求稍微不太一样,而且必须主动调用end方法才会真正发送网络请求。

http原生文件上传

使用postman模拟,一般使用from-data来文件上传
在这里插入图片描述
在这里插入图片描述
错误做法:在这里插入图片描述
在这里插入图片描述
一般人都是想着拿到流然后使用fs.craeteWriteStream将数据写到一个新的文件去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以生成,但是这个文件是打不开u的
在这里插入图片描述
因为我们写入的data字节流是有问题的,它不止包含图片的信息,还有一些其他的信息。

正确的做法

去掉文件的信息,只留图片的信息再写入
在这里插入图片描述

在这里插入图片描述

借助qs.parse(),截取
在这里插入图片描述
在这里插入图片描述
忘记加个编码
在这里插入图片描述
在这里插入图片描述
这样就能正常打开了、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coderlin_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值