HTTP协议入门_动力节点Java学院整理
HTTP协议是互联网上应用最为广泛的协议之一,它是超文本传输协议(Hypertext Transfer Protocol)的缩写。在使用互联网服务时,用户的浏览器、移动应用或其他客户端通过HTTP协议与服务端进行通信,交换数据、请求资源。本篇攻略将从HTTP协议的基本概念、请求响应、状态码、常用请求方式和Header等方面入门介绍。
HTTP协议的基本概念
HTTP协议是基于TCP/IP协议的应用层协议,用于在Web浏览器和网站服务器之间传输超文本格式文件。HTTP协议定义了客户端和服务器之间交互的语法规则、请求和响应方法以及标头的语义。
请求响应
HTTP用于客户端和服务端之间的交互,请求-响应范式是HTTP协议的核心。客户端向服务端发送一个HTTP请求,服务端接收请求后向客户端返回一个HTTP响应。
下图是请求-响应范式的简单模型:
+------------+ +-----------+
| | | |
| Client | | Server |
| | | |
+------+-----+ +------+----+
| |
| Request |
|------------------------------------>|
| |
| Response |
|<------------------------------------|
| |
状态码
HTTP协议中的状态码指示请求结果的状态,包括成功、重定向、客户端错误、服务端错误等四个类别。常见的状态码如下:
- 1xx(临时响应):表示客户端请求已经接收,但是服务端还需要进一步处理才能完成请求。
- 2xx(成功):表示客户端请求已经被服务端成功接收、理解并完成了。
- 3xx(重定向):表示客户端必须采取进一步的动作才能完成请求。
- 4xx(客户端错误):表示客户端提交的请求存在问题或者请求无法被服务端完成。
- 5xx(服务端错误):表示服务端不能完成客户端的请求。
应用开发者需要熟悉各类状态码的含义,以便快速排查开发过程中产生的问题。
常用请求方式
HTTP中定义了常用的请求方式,包括GET、POST、PUT、DELETE等。其中GET请求用于读取资源,通常情况下它不应该引起服务器端的状态变化;POST请求用于提交更改或创建资源请求;PUT请求用于更新资源,DELETE请求用于删除指定位置资源。下面是具体的说明:
- GET请求
GET请求用于读取资源,通常情况下它不应该引起服务器端的状态变化。当浏览者在浏览器的地址栏中输入URL地址后敲击回车键,或者单击网页中超链接进行跳转时,就会发送GET请求。
下面是一个使用GET方式请求百度首页的示例:
GET / HTTP/1.1
Host: www.baidu.com
- POST请求
POST请求用于提交更改或创建资源请求。当浏览者提交表单时,表单内容就被打包在POST请求中发送到服务器端进行处理。
下面是一个使用POST方式提交表单数据的示例:
POST /user/register HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
username=testuser&password=123456
Header
Header指HTTP协议中的请求或响应头部。它包含了发送请求或返回响应相关的信息,例如:User-Agent、Cookie、Cache-Control等。
下面是一个请求头部的示例:
GET / HTTP1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36
Sec-Fetch-Dest: document
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
示例说明
示例一:HTTP请求
假设一个场景,前端需要调用一个API接口获取指定{id}的用户信息,请求方式使用GET,接口地址为:http://www.example.com/user/{id}。请求中需要添加Header信息,包括User-Agent、Accpet等。可以使用JavaScript代码调用请求,示例如下:
fetch('http://www.example.com/user/123', {
headers: {
'User-Agent': 'Mozilla/5.0',
'Accept': 'application/json'
}
})
.then(response => response.json())
.then(data => console.log(data));
示例二:HTTP响应
接下来是一个服务端响应的示例,在服务端,用户状态可以通过API接口进行查询,接口路由为/api/user/{id}。用户状态有三种:0表示未激活,1表示激活但未认证,2表示激活和认证全完成。客户端需要通过下面的示例代码获取用户状态:
fetch('/api/user/123').then(response => {
if (response.status === 200) {
return response.json();
} else {
console.log('请求失败!');
}
})
.then(data => {
console.log(`用户[${id}]状态:${data.status}`);
})
.catch(error => {
console.log(error);
});
以上示例代码中,使用fetch方法发起了一个GET请求,将服务端返回的JSON格式数据解析成Javascript对象并将其输出到控制台上。
总结
HTTP协议是互联网上应用最为广泛的协议之一,应用开发者需要熟悉其基本概念和规范,以便快速排除HTTP调用过程中产生的问题。我们在本篇文章中着重介绍了HTTP协议的基本概念、请求响应、状态码、常用请求方式和Header等方面。我们相信,熟悉HTTP协议的基本知识对于做好互联网开发工作有着重要作用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:HTTP协议入门_动力节点Java学院整理 - Python技术站