HTTP(超文本传输协议)是一种用于传输超媒体文档(如Web页面)的应用层协议。HTTP定义了客户端(通常是浏览器)与服务器之间进行通信的方式。下面是HTTP协议的主要组成部分:
一、HTTP请求的基本结构
http请求由四部分组成:请求行、请求头、空一行、请求体
1、 请求行
•方法(Method):指定请求类型,如GET、POST、PUT、DELETE等。
•请求URI(Request-URI):标识请求的资源位置,可以是绝对路径或相对路径。
•HTTP版本(HTTP Version):指定使用的HTTP协议版本,如HTTP/1.1或HTTP/2。
举例,POST
/api/1745339227916349440_list_1704956921063 HTTP/1.1,POST是请求方法,
api/1745339227916349440_list_1704956921063 是URL,HTTP/1.1表示使用的HTTP版本为1.1。
1.1. 请求方法分类
GET:请求指定的资源。
POST:向指定的资源提交数据进行处理请求(例如提交表单或上传文件)。
PUT:替换指定资源的内容。
DELETE:删除指定的资源。
OPTIONS:请求服务器支持的通信选项。
HEAD:请求指定资源的头部信息。
PATCH:对资源的部分更新。
CONNECT:用于建立代理服务器到另一台服务器的隧道连接。
1.1.1 get和post请求方法区别
get:
请求参数位置不同:传输数据暴露在url,使用GET方法请求时,请求参数和对应的值是跟在URL后面,通过问号(“?”)和and连接符(“&”)以及“=”号连接。
参数大小限制:传输数据量小,一般不超过2048个字符
安全性:GET 请求通常被认为是安全级别的较低,因为请求参数直接暴露在URL中。•适用性:适合用于获取数据,而不适合用于修改数据
缓存机制:GET 请求可以被浏览器缓存,以减少重复请求。示例:静态资源(如图片、CSS、JavaScript文件)通常使用 GET 请求。
post:
请求参数位置不同:参数携带在请求体中,所以需要在代码中对参数进行封装,封装完毕传入接口
参数大小限制:传输数据量大,理论上没有限制
安全性:POST 请求通常被认为是安全级别的较高,因为请求参数不暴露在URL中。•适用性:适合用于修改数据,如创建、更新或删除资源。
缓存机制:POST 请求通常不被缓存,因为每次请求可能会产生不同的结果。•示例:动态内容生成,如用户提交的数据。
1.1.2 OPTIONS请求方法
OPTIONS 请求主要用于获取目标资源支持的HTTP方法及其他相关信息,特别是在跨域请求中用于预检。通过发送 OPTIONS 请求,客户端可以了解服务器端的支持情况,从而正确配置请求。这对于开发和调试Web应用或API非常有用
以下是跨域请求预检示例:
2 、请求头
请求头部由键/值对组成,每行一对,键和值用冒号“:”(英文)分隔。
•通用头字段(General Header Fields):如Date、Cache-Control等。
•请求头字段(Request Header Fields):如Accept、Content-Type等。
•实体头字段(Entity Header Fields):如Content-Length、Content-Type等。
2.1 常用Content-Type分类、作用
Content-Type 是一个重要的HTTP头字段,用于指示请求或响应的消息主体(body)的内容类型。它告诉接收方消息主体的数据格式是什么样的,以便接收方能够正确解析和处理这些数据。常见的 Content-Type 包括 text/plain、application/json、application/xml、
application/x-www-form-urlencoded、multipart/form-data、text/html、image/jpeg、image/png、application/octet-stream 和 application/pdf。正确设置 Content-Type 可以确保数据被正确解析和处理。
注意:选择正确的 Content-Type在实际应用中,选择正确的 Content-Type 非常重要,因为这直接影响到数据的解析和处理。例如,如果发送JSON数据,但 Content-Type 设置为 text/plain,那么接收方可能会尝试将其作为纯文本处理,而不是作为JSON数据进行解析,从而导致错误。
2.1.1. text/plain
•用途:纯文本数据。
•示例:用于传输简单的文本信息,如纯文本文件。
•格式:纯文本格式,不包含任何HTML标记。
2.1.2. application/json
•用途:JSON(JavaScript Object Notation)格式的数据。
•示例:用于传输JSON格式的数据,常用于Web API。
•格式:JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
2.1.3. application/xml
•用途:XML(eXtensible Markup Language)格式的数据。
•示例:用于传输XML格式的数据,常用于Web服务。
•格式:XML是一种标记语言,用于存储和传输数据。
2.1.4. application/x-www-form-urlencoded
•用途:编码后的表单数据。
•示例:用于传输通过HTML
元素提交的数据。
•格式:键值对的形式,如 key1=value1&key2=value2。
2.1.5. multipart/form-data
•用途:用于传输包含文件上传的表单数据。
•示例:用于传输通过HTML 元素提交的文件和其他表单数据。
•格式:数据以多个部分(part)的形式发送,每个部分可以包含文件数据或其他表单数据。
2.1.6. text/html
•用途:HTML(HyperText Markup Language)格式的数据。
•示例:用于传输HTML页面。
•格式:HTML是一种标记语言,用于创建网页。
2.1.7. image/jpeg
•用途:JPEG图像格式的数据。
•示例:用于传输JPEG格式的图像文件。
•格式:JPEG是一种常用的图像文件格式,支持有损压缩。
2.1.8. image/png
•用途:PNG图像格式的数据。
•示例:用于传输PNG格式的图像文件。
•格式:PNG是一种无损压缩的图像文件格式,支持透明度。
2.1.9. application/octet-stream
•用途:二进制数据,通常用于传输未知类型的文件。
•示例:用于传输二进制文件,如下载文件。
•格式:字节流形式的数据。
2.1.10. application/pdf
•用途:PDF(Portable Document Format)格式的数据。
•示例:用于传输PDF格式的文件。
•格式:PDF是一种文件格式,用于呈现和交换文档。
3 、空行
用户进行内容分割,表示请求头到此为止,下一行的内容不再是请求头。
4、 请求体
如果请求方法允许(如POST、PUT),则可以包含请求正文。请求正文通常包含发送给服务器的数据
二、HTTP响应的基本结构
http响应由四部分组成:状态行、响应头、空一行、响应体
1、 状态行
•HTTP版本(HTTP Version):指定使用的HTTP协议版本,如HTTP/1.1或HTTP/2。
•状态码(Status Code):表示请求结果的状态码,如200(成功)、404(未找到)等。
•状态消息(Reason Phrase):描述状态码的简短消息。
举例: HTTP/1.1 200 OK
1.1 状态码分类
1xx:信息响应类,指示请求已接收,继续处理。
2xx:成功响应类,表示请求已成功被服务器接收、理解,并接受。
3xx:重定向响应类,表示需要客户端采取进一步的操作才能完成请求。
4xx:客户端错误类,表示请求中有语法错误或请求无法实现。
5xx:服务器错误类,表示服务器在处理请求的过程中发生了错误。
2、 响应头
和请求报文的请求头类似,响应头也由键值对组成,每行一对,键和值用英文冒号 : 分隔。
3、 空行
作为内容分割,表示以下不再是响应头的内容。
4、 响应体
如果响应包含实体内容,则可以包含响应正文。响应正文通常包含返回给客户端的数据。