阅读 31

Http 学习笔记一

HTTP 学习笔记一

参考链接:

  1. 抛物线课程
  2. HTTP请求的基础知识——HTTP中GET,POST和PUT的区别

GET、POST、PUT、DELETE区别

GET

  • 用于获取资源
  • 对服务器数据不进行修改,只是获取
  • 不发送body
  • 具有幂等性(这里强调的是一次和N次具有相同的副作用,而不是每次GET的结果相同。)
GET /user/1?gender=sex HTTP/1.1
Host: api.github.com
复制代码

对应Retorfit的代码

@GET("/user/{id}")
Call<User> getUser(@Path("id") String id,@Query("gender") String gender)
复制代码

POST

  • 用于增加或修改资源
  • 发送给服务器的内容写在body里面
  • 非幂等的(多次调用会产生不同的结果,比如:创建一个用户,由于网络原因或是其他原因多创建了几次,那么将会有多个用户被创建.)
  • 一般用于创建资源

PUT

  • 理论上仅用于修改资源(实际功能和POST没有区别)
  • 发送给服务器的内容写在body里面
  • 幂等性(PUT id/456则会创建一个id为456的用户,多次调用还是会创建的结果是一样的,所以PUT是等幂的.)
  • 一般用于更新资源

DELETE

  • 用于删除资源

  • 不发送body

  • 幂等性(调用一次和N次对系统产生的副作用是相同的,即删掉id为4231的帖子;因此,调用者可以多次调用或刷新页面而不必担心引起错误。)

PATCH

  • 用于更新局部数据(PUT则是整个更新)
  • 不发送body

HEAD

  • 与GET基本相同,返回的请求无body
  • 返回有HEAD

POST 和 PUT的区别

从技术角度上 POST和PUT是没有任何区别的。只有语义上的区别

HEAD 和GET区别

HEAD 响应无body,GET响应有body。 H

Http Header 部分解析

Http 传输过程本质只是按照格式传输的文本. (body部分可能是二进制数据)。

Host

GET /users/1 HTTP/1.1
Host: api.github.com
复制代码

Host作用不是用于定位主机的,主机IP地址是在发送数据之前就被定位了

Host 是域名,用于给主机看的,让主机决定要分配的服务器。

Content-type(传输类型)

主要有四类:

  1. text/html 一般网页等

image-20201219202922863.png

  1. x-www-form-urlencoded 普通表单格式,只能传 字符串数据

    Web ⻚⾯纯⽂本表单的提交⽅式。

image-20201219203123063.png

image-20201219203110159.png

  1. multipart/form-data Web ⻚⾯含有⼆进制⽂件时的提交⽅式。

image-20201219203201709.png

image-20201219203228385.png 4. application/json , image/jpeg , application/zip ...

单项内容(⽂本或⾮⽂本都可以),⽤于 Web Api 的响应或者 POST / PUT 的请求

提交json示例

image-20201219203353806.png

Content-Length

指定Body的长度(字节)

chunked(Chunked Transfer Encoding 分块传输编码)

⽤于当响应发起时,内容⻓度还没能确定的情况下。和 Content-Length 不同时使 ⽤。⽤途是尽早给出响应,减少⽤户等待。

image-20201219203547202.png

Location

指定重定向的目标URL

User-Agent

⽤户代理,即是谁实际发送请求、接受响应的,例如⼿机浏览器、某款⼿机 App。

Range / Accept-Range -按范围取数据

Accept-Range: bytes 响应报⽂中出现,表示服务器⽀持按字节来取范围数据 Range: bytes=- 请求报⽂中出现,表示要取哪段数据 Content-Range:-/total 响应报⽂中出现,表示发送的是哪段数据

作用:断线续传、多线程下载。

其他 Headers

  • Accept: 客户端能接受的数据类型。如 text/html
  • Accept-Charset: 客户端接受的字符集。如 utf-8
  • Accept-Encoding: 客户端接受的压缩编码类型。如 gzip
  • Content-Encoding:压缩类型。如 gzip

Cache 和Buffer

Cache

作⽤:在客户端或中间⽹络节点缓存数据,降低从服务器取数据的频率,以提⾼⽹ 络性能。 缓冲数据等

Buffer

作用:缓冲数据。比如服务端数据只传了部分,先缓冲起来,等所有数据传来后再进行处理

REST的定义和作用

参考链接:

什么是REST

REST 的定义众说纷纭,没有统⼀答案。 一般而言 REST HTTP 即正确使⽤ HTTP。

包括:

  1. 无状态

  2. 使⽤资源的格式来定义 URL

  3. 规范地使⽤ method 来定义⽹络请求操作

  4. 规范地使⽤ status code 来表示响应状态

  5. 其他符合 HTTP 规范的设计准则

文章分类
Android
文章标签