HTTP笔记2:http方法、静态服务器、RESTfulAPI

问题:

  1. 常见HTTP方法有哪些?使用场景分别是什么?
  2. GET与POST有什么区别?
  3. 什么是RESTful API?

1 简单的http协议

1.1 响应与请求

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

1.2 HTTP是不保存状态的协议

  • 优点:这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。
  • 缺点:比如,用户登录到一家购物网站,即使他跳转到该站3其他页面后,也需要能继续保持登录状态
  • 解决方法:HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态能,于是引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了

1.3 HTTP方法

为了请求 URI 定位资源
常见HTTP方法

  • GET:获取资源
  • POST:传输实体主体
    传输大量内容到服务器上
  • PUT:同post
  • HEAD:只获得报文的首部
  • DELETE:删除服务器数据库中的文件
  • OPTIONS:询问支持的方法
  • CONNECT:要求隧道协议连接代理
  • TRACE:追踪路径

get和post有什么区别

  1. get是在url里
    post在请求体里
  2. 提交大量数据不能使用get(拼接成url)
  3. 安全性post > get (广义上)比如提交密码时

1.4 持久连接节省通讯量

老版本每一次HTTP通讯都会断开一次tcp的连接
在这里插入图片描述

改进1:持久连接

只要任意一端没有明确提出断开连接,则保持 TCP 连接状态

  • 持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。
  • 另外,减少开销的那部分时间,使HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了

改进2:管线化

  • 以前每次请求响应到之后才能继续发送
  • 管线化就是不等待响应,直接发送下一个请求

1.5:状态管理

服务器记录当前用户就会在response里写一个setCookies,用户收到后 就带有这个cookie,下一次发送request的时候,就会带着这个cookie发送,服务器就知道这个用户

2 静态服务器案例

一个ip地址 10.15.20.38
网址:http://10.15.20.38:80/abc.html
请求头:GRT / abc.html HTTP/1.1

  1. 本地创建一个abc.html文件,然后上传到 ip的 /usr/local/www 目录下
  2. 写一个服务器(应用程序),监听80端口,接收HTTP的报文
  3. 服务器听到请求,进行处理
    1. 你的方法是什么
    2. 你的path 是什么(/abc.html
      /
      /course
      /course/aer432rre
    3. 我读取 /usr/local/www/abc.html ,拿出数据
    4. 响应给客户端(除了里面的数据之外,还有其他信息,比如告诉客户端这是html文件)
  4. 浏览器收到响应数据,数据类型是html,用html的方式去渲染

3 HTTP的 RESTfullAPI

表现层状态转换(英语:Representational State Transfer,缩写:REST)
API设计规范
HTTP方法与对应数据库增删改查对应

  • GET:读取(Read)
  • POST:新建(Create)
  • PUT:更新(Update)
  • PATCH:更新(Update),通常是部分更新
  • DELETE:删除(Delete)

范例

GET /books , 列出所有的图书
POST /books , 创建一本图书
PUT /books, 批量更新图书信息
DELETE /books, 删除所有图书
GET /books/10, 获取10号图书详细信息
PUT /books/10, 更新10号图书
PATCH /books/10, 更新10号图书
DELETE /books/10, 删除10号图书

3.1 PUT和PATCH有什么差别?

对于

{
    "username": "hunger"
    "email": "hunger@jirengu.com" 
}

PUT修改传参,需包含全部参数

{
    "username": "hunger"
    "email": "hunger@vip.qq.com" 
}

PATCH修改传参,只需要传递需要修改的参数

{
    "email": "hunger@vip.qq.com" 
}

另外推荐在URL中强制加入版本号,如GET /v1/books老的api可以用

3.2 form表单支持哪些方法

  1. post
  2. get

但是可以通过变通的方法,让服务器知道你本意是想做什么。

<form action="/books" method="POST">
    <input type="hidden" name="_method" value="PUT">
</form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值