HTTP请求头部信息
请求方法
- GET请求:用于获取指定资源的信息,请求参数通常通过URL的查询字符串传递。
- POST请求:用于提交指定资源的信息,请求参数通常通过请求体传递。
- PUT请求:用于更新指定资源的信息,请求参数通常通过请求体传递。
- DELETE请求:用于删除指定资源。
- HEAD请求:类似于GET请求,但只返回响应头部信息,不返回响应体信息。
- OPTIONS请求:用于获取指定资源所支持的通信选项。
- TRACE请求:用于追踪请求-响应的传输路径,用于调试和测试。
- CONNECT请求:用于将服务器作为代理连接到其他网络资源,通常用于HTTPS协议的隧道。
请求数据类型(Content-Type 字段)
请求体(Body):用于传输请求的主体数据
- application/x-www-form-urlencoded:表示表单数据,数据格式为 key-value 键值对的形式,多个键值对使用“&”符号分隔。例如,Content-Type 字段值为 application/x-www-form-urlencoded 时,请求体可能如下所示:
- multipart/form-data:表示多部分表单数据,适用于上传文件等场景。请求体分为多个部分,每个部分都有自己的 Content-Type 和 Content-Disposition 字段,用于描述该部分的内容类型和附加属性。例如,Content-Type 字段值为 multipart/form-data 时,请求体可能如下所示:
1
2
3
4
5
6
7
8
9
10
| --boundary
Content-Disposition: form-data; name="name"
John
--boundary
Content-Disposition: form-data; name="file"; filename="example.png"
Content-Type: image/png
(二进制文件数据)
--boundary--
|
- application/json:表示 JSON 数据,数据格式为 JavaScript 对象或数组的形式。例如,Content-Type 字段值为 application/json 时,请求体可能如下所示:
1
2
3
4
| {
"name": "John",
"age": 25
}
|
- application/xml:表示 XML 数据,数据格式为 XML 的形式。例如,Content-Type 字段值为 application/xml 时,请求体可能如下所示:
1
2
3
4
| <user>
<name>John</name>
<age>25</age>
</user>
|
- text/plain:表示纯文本数据,数据格式为普通文本的形式。例如,Content-Type 字段值为 text/plain 时,请求体可能如下所示:
- application/octet-stream:表示二进制数据,适用于上传二进制文件等场景。例如,Content-Type 字段值为 application/octet-stream 时,请求体为二进制流的形式。
除了上述常见的 Content-Type 字段值外,HTTP 协议还定义了许多其他的媒体类型,例如 image/png、video/mp4、application/pdf 等,可以根据实际需要选择合适的媒体类型进行使用。
Flask框架(web应用)
1
| from flask import Flask, request, render_template, redirect, session, jsonify
|
Request函数
描述:处理来自客户端的请求数据
当post请求时,需要使用request.form来获取数据
1
| variable = request.form #输出表单请求数据,类型为mmutableMultiDict
|
1
| variable = request.form.to_dict() #打印输出请求的数据类型mmutableMultiDict转换为字典型;方便存入后台数据库
|
1
| variable = request.form.get('key') #获取表单请求数据
|
当get请求时,需要使用request.args来获取数据
1
2
3
| variable = request.args.get('id') #获取具体某个参数
#http://192.168.1.1:4000/index?id=1&name=abc
#request.args就是获取请求链接中?后面所有参数;把所有参数转换成一个列表,列表里面的元素是一个元组,结构为:('id','1');再转换成一个字典,还有编码等操作。
|
打印http协议头部信息
1
| variable = request.headers
|
打印请求类型
1
| variable = request.method
|
打印请求的数据类型
1
| variable = request.mimetype
|
打印数据类型为application/json的请求数据
1
| variable = request.json #如果mimetype(数据类型) 是 application/json,这个参数将会解析 json 数据,如果不是则返回 None
|
render_template函数(渲染模板并将其作为响应发送给客户端)
描述:用于渲染模板并将其作为响应发送给客户端。(内部URL)
render_template
则会将指定的模板文件和需要的数据作为参数传递给模板引擎,最终生成 HTML 页面返回给浏览器。
1
2
3
4
5
6
7
| #后端传参给前端HTML模板
user = {'username': 'John', 'age': 25}
return render_template('index.html', user=user) 或者 ('index.html', name='John', age=25)
#前端调用参数
<h1>Welcome </h1> 或者
<p>Your age is </p> 或者
#HTML模板都放入/templates目录下;需要自行创建templates目录
|
redirect函数(重定向到外部链接)
描述:重定向到另一个URL,通常用于处理表单提交后的页面跳转等操作。(外部URL)
redirect
会发送一个 HTTP 重定向响应给浏览器,告诉浏览器要跳转到另一个 URL。
1
2
| redirect('/thank-you') #里面的参数可以是路由
redirect('https://www.baidu.com', code=302) #也可以是指定的外部链接
|
session函数(检查用户登录状态)
描述:session 变量是一种在服务器端存储和管理用户状态的机制,可以用于跨请求保留数据。当用户登录成功时,可以设置 session['logged_in'] = True
,表示用户已经登录。
1
2
3
4
5
6
7
| from flask import session
if 'logged_in' in session and session['logged_in']:
# 用户已经登录
else:
# 用户未登录
#ession['logged_in'] 检查 session 中是否存在 logged_in 变量,并且其值为 True。如果是,则说明用户已经登录。如果 logged_in 变量不存在或其值为 False,则说明用户未登录。
|
Python-json模块
JSON与PYTHON字典数据转换
将JSON数据转换为Python字典,可以使用 json.loads()
方法:
1
2
3
4
5
6
7
8
9
10
11
12
| import json
# JSON数据
json_str = '{"name": "John", "age": 30, "city": "New York"}'
# 将JSON数据解析为Python字典
data = json.loads(json_str)
# 输出Python字典
print(data)
#输出 {'name': 'John', 'age': 30, 'city': 'New York'}
|
将Python字典转换为JSON数据,可以使用 json.dumps()
方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| import json
# 定义一个Python字典
data = {
"name": "John",
"age": 30,
"city": "New York"
}
# 将Python字典转换为JSON数据
json_data = json.dumps(data)
print(json_data)
#输出 {"name": "John", "age": 30, "city": "New York"}
|
备注:JSON对象中的键都用双引号括起来,而Python字典中的键可以用单引号或双引号,甚至可以不用引号。此外,JSON对象中的值的类型受到限制,例如不能使用Python中的True和False,而Python字典中则没有这样的限制