HTTP基本概念
HTTP是什么?
HTTP是超文本传输协议,既Hyper Text Transfer Protocol。
超文本的概念:超文本是超级文本的缩写,指文字、图片、视频等"文本"的混合物,当然还有可以跳转的超链接。
给出一个更准确的答案就是:
HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。
报文格式
请求报文:
(PS: sp:空格 cr:回车 lf:换行)
请求行:
方法字段:
GET:GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
PUT:与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
POST:POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
DELETE:是用来删除某一个资源的,该请求就像数据库的delete操作。综上所述:
1、GET 查
2、PUT 改
3、POST 增
4、DELETE 删关于PUT和POST的区别可以参考:https://blog.csdn.net/dream_follower/article/details/90048425
HEAD:本质和get一样,但是响应中没有呈现数据,而是http的头信息。
URL字段:它定义了相关网页的地址和名称。
版本字段:给出使用的协议的版本号。
首部行:
响应报文:
状态行:
状态码:标识了客户端HTTP请求的状态。
状态码的类别:
类别 | 原因 |
---|---|
1XX | Informational(信息性状态码)服务器收到请求,需要请求者继续执行操作 |
2XX | Success(成功状态码) 请求正常处理完毕 |
3XX | Redirection(重定向状态码)需要进一步的操作以完成请求 |
4XX | Client Error(客户端错误状态码) 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) 服务器处理请求出错 |
常见状态码:
200 | OK,表示从客户端发来的请求在服务器端被正确处理 |
400 | bad request,请求报文存在语法错误 |
403 | forbidden,表示对请求资源的访问被服务器拒绝,可在实体主体部分返回原因描述 |
404 | not found,表示在服务器上没有找到请求的资源 |
500 | Internal Server Error:表示服务器发生不可预期的错误,导致无法完成客户端的请求 |
503 | Service Unavailable:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常 |
首部行:
Get和Post
GET 方法的含义是请求从服务器获取资源,而POST方法是相反的,他是向URL指定的资源提交数据,数据放在body里。
GET方法是安全且幂等的,而POST方法是不安全且不幂等的。
安全和幂等的概念:
在HTTP里,安全指请求方法不会破坏服务器上的资源。
幂等是指多次执行相同的操作,结果是相同的。
因为GET是只读操作,所以无论操作多少次,服务器上的资源都是安全的,且每次的结果都是相同,所以GET方法安全且幂等。
而POST是提交数据,会修改服务器上的资源,所以是不安全且不幂等的。