node 后端知识+HTTP

Node.js的特点:
1.单线程
优点:节省内存,事件驱动机制 ,异步回调,
劣势:不能做高并发开发,适合小型服务器架构开发
2.非阻塞IO
异步IO,事件驱动(回调/异步函数),
3.事件驱动
解决非阻塞IO 的问题,根据事件环的排序或者优先级来决定先解决那个事件,
总结:
node.js是在单线程的基础上加了非阻塞IO和事件驱动

node.js的应用方向
特点:
擅长大量并发的IO如聊天应用,
不擅长计算,
天生异步
使用场景:
适合网站开发
适合做即时聊天
写API
构建工具 webpack
写操作系统
命令行 反向代理

node解决的问题
是极客追求性能的产物,缺少了很多服务器健壮的考虑,所以node不适合在银行,证券业务中
但是适合中小企业、创业公司做核心业务
大型公司会使用node在前端和后端之间做中间层

web资源
什么是web web网页,它是用于表示网络主机上供外界访问的资源。
web资源分类
静态web资源指web页面中人们浏览的数据始终不变
动态web资源
指web页面中的人们浏览的数据是由程序产生的,不同时间访问web页面看懂的内容各不相同,
web资源方哪里:
放在web服务器中
web服务器就是可以提供外界访问web资源的一个软件,
web资源放到指定的目录当中 ,就可以在对应的端口在浏览器中访问的。80 8080...

URL地址:
协议://主机地址:端口号/资源地址
比如: http://www.baidu.com/index.html

资源其实就是放在网上的一个文件目录里包
通过网址/路径去访问资源
端口号==软件的门牌号


9dba0166d226a6681cdfdde9c11e499.png

CS和BS:
软件使用方式上的两种划分
C/S(app/桌面): Client/Server--PC客服端、服务器端架构
特点:
1.特点:服务器就只有一个数据库,业务逻辑和界面交给客服端完成
2.优点:安全 页面丰富-用户体验好
3.缺点:每次升级都需要安装,可移植性差,不可跨平台(安卓/ios/win)
B/S:Browser/Server(网站)--浏览器/服务器架构
特点:居于浏览器访问的应用,业务层教改服务器端,客户端仅仅做界面的渲染和数据的交互,
优点:只开发服务器端,可以跨平台,移植性好
缺点:安全性低,用户体验差。

资源访问流程:
客户端:
浏览器为核心的安卓/苹果/微信小程序
服务器:
php--- node-js---tom-cat
从输入url回车到页面显示,发生了什么:
一个网址就是对应一个Ip地址;ping 网址
ip通过dns解析到指定域名
通过IP地址找到对应的电脑,
电脑当中安装有web服务器,通过端口号找到对应的服务器
所以输入对应的域名会返回对应ip下对应端口号下对应文件目录下的对应页面
这就是一个HTTP请求的过程

请求和响应
请求:把服务器请求发送到服务器
响应:服务端吧你要的数据发给客户端
请求和响应都要有一定的格式:
约定好客户端以什么样的格式吧数据给服务器
约定好服务端以什么样的格式吧数据给客户端
这个约定就是HTTP协议

e326f8c888b3c0d03655a384b36e17c.png

Http协议:
约束双方规范的准则---超文本传输协议--所有的www的(域名)文件都必须接受这个标准
约束请求和响应的规则
请求和响应都是成对出现的。
请求的发送方式:
1.浏览器地址栏
2.HTML中的form表单
3.a标签的链接
4.src属性
HTTP请求:
请求行:
请求方式 post gei
请求资源 HTTP1.1版本
请求头(Response Header):
键值对的形式
Cookie:content-type-
自动把这个信息发送给服务器
请求体:
请求方式是post时 请求体会出现请求的参数
get请求是 请求参数不会出现在请求体中,会拼在url地址后面

a3f09eabc55b9d4d399e78509df7307.png

http响应:
响应行
1.http协议
2.状态码:200=成功-302=重定向,500=服务器错误
3.其他状态码:2xx=成功,3xx=重定向,4xx=客户端错误,5xx=服务器错误

响应头:
1.location content-type..server 等 把服务器端的信息和数据格式传给客户端,

响应体:
返回客户端的正文
浏览器加载到内存
然后解析到渲染页面

请求方式:
get::
主要用于向页面请求发送参数
地址和参数中间用?号隔开,
查询字符串会显示在地址栏中 不安全
有大小限制 最多124字符
能缓存
主要用于获取数据
post::
主要用于请求发送参数
发送的信息单独存放 和HTTP请求一起
没有参数类型限制
比较安全
查询字符串不会显示在地址栏中
post传输量比较大 可以有2m

post 主要用于将数据传递到服务器 (提交表单)
get 就是为了从服务器中获取数据

你可能感兴趣的:(node 后端知识+HTTP)