http的请求与响应
2021-05-28 00:02
标签:保留 link ajax 关闭 headers 结束 查询 客户端浏览器 入参 文档: http://docs.jinkan.org/docs/flask/api.html#flask.request request:flask中代表当前请求的 作用:在视图函数中取出本次请求数据 导入: 代码位置: 代理类 from flask.app import Request, 源码类:from werkzeug.wrappers.Request 父类:from werkzeug.wrappers.base_request 常用的属性如下: 获取请求中各项参数 flask默认支持2种响应方式: 数据响应: 默认响应html文本,也可以返回 JSON格式,或其他格式 页面响应: 重定向 url_for 视图之间的跳转 响应的时候,flask也支持自定义http响应状态码 响应的html文本 返回json数据 在 Flask 中可以直接使用 jsonify 生成一个 JSON 的响应 flask中返回json 数据,都是flask的jsonify方法返回就可以了. 重定向到百度页面 可以直接填写自己 url 路径 也可以使用 url_for 生成指定视图函数所对应的 url 在 url_for 函数中传入参数 在 Flask 中,可以很方便的返回自定义状态码,以实现不符合 http 协议的状态码,例如:status code: 777 所谓的会话,就是客户端浏览器和服务端网站之间一次完整的交互过程. 会话的开始是在用户通过浏览器第一次访问服务端网站开始. 会话的结束时在用户通过关闭浏览器以后,与服务端断开. 所谓的会话控制,就是在客户端浏览器和服务端网站之间,进行多次http请求响应之间,记录、跟踪和识别用户的信息而已。 因为 http 是一种无状态协议,浏览器请求服务器是无状态的。 无状态:指一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。 无状态原因:浏览器与服务器是使用 socket 套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的 socket 连接,而且服务器也会在处理页面完毕之后销毁页面对象。 有时需要保持下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等 实现状态保持主要有两种方式: 在客户端存储信息使用 在服务器端存储信息使用 http的请求与响应 标签:保留 link ajax 关闭 headers 结束 查询 客户端浏览器 入参 原文地址:https://www.cnblogs.com/xo1990/p/14806359.html请求
request 对象
from flask import request
属性
说明
类型
data
记录请求体的数据,并转换为字符串 只要是通过其他属性无法识别转换的请求体数据 最终都是保留到data属性中 例如:有些公司开发小程序,原生IOS或者安卓,这一类客户端有时候发送过来的数据就不一样是普通的表单,查询字符串或ajax
bytes类型
form
记录请求中的html表单数据
MultiDict
args
记录请求中的查询字符串,也可以是query_string
MultiDict
cookies
记录请求中的cookie信息
Dict
headers
记录请求中的请求头
EnvironHeaders
method
记录请求使用的HTTP方法
GET/POST
url
记录请求的URL地址
string
files
记录请求上传的文件列表
*
json
记录ajax请求的json数据
json
from flask import Flask,request
# 初始化
app = Flask(import_name=__name__)
# 编写路由视图
@app.route(rule=‘/‘)
def index():
return "
hello world!
"
"""== 获取查询字符串 =="""
@app.route(rule="/args",methods=["post","get"])
def args():
print(request.args) # 获取查询字符串
"""
请求地址:
http://127.0.0.1:5000/args?name=xiaoming&password=123&lve=swimming&lve=shopping
打印效果:
ImmutableMultiDict([(‘name‘, ‘xiaoming‘), (‘password‘, ‘123‘)])
ImmutableMultiDict是一个由flask封装的字典类,在字典的基础上,提供了一些其他的方法而已。
格式:
ImmutableMultiDict([(‘键‘, ‘值‘), (‘键‘, ‘值‘)])
字典本身不支持同名键的,ImmutableMultiDict类解决了键同名问题
操作ImmutableMultiDict,完全可以操作字典操作,同时还提供了get,getlist方法,获取指定键的1个值或多个值
"""
print(request.args["name"]) # xiaoming
print(request.args.get("name")) # xiaoming
print(request.args.getlist("lve")) # [‘swimming‘, ‘shopping‘]
# 把ImmutableMultiDict转换成普通字典
print(request.args.to_dict(flat=False)) # {‘name‘: [‘xiaoming‘], ‘password‘: [‘123‘], ‘lve‘: [‘swimming‘, ‘shopping‘]}
print(request.args.to_dict(flat=True)) # {‘name‘: ‘xiaoming‘, ‘password‘: ‘123‘, ‘lve‘: ‘swimming‘}
return "ok"
"""== 获取请求体数据 =="""
@app.route(rule="/data",methods=["post","put","patch"])
def data():
"""接受客户端发送过来的请求体数据,是request.json,request.form,request.files等无法接受的数据,全部会保留到这里"""
print(request.data) #
# 接受表单提交的数据
print(request.form) # ImmutableMultiDict([(‘username‘, ‘root‘), (‘password‘, ‘123456‘)])
# 接受ajax或其他客户端提交过来的json数据
print(request.json) # {‘username‘: ‘root‘, ‘password‘: ‘123456‘}
# 接受上传文件
avatar = request.files["avatar"] # ImmutableMultiDict([(‘avatar‘, 响应
from flask import make_response
@app.route("/")
def index():
# [默认支持]响应html文本
return ""
return make_response("
hello user
") # 等同于上面的一段from flask import Flask, request, jsonify
# jsonify 就是json里面的jsonify
@app.route("/")
def index():
# 也可以响应json格式代码
data = [
{"id":1,"username":"liulaoshi","age":18},
{"id":2,"username":"liulaoshi","age":17},
{"id":3,"username":"liulaoshi","age":16},
{"id":4,"username":"liulaoshi","age":15},
]
return jsonify(data)
from flask import redirect
# 页面跳转响应
@app.route("/user")
def user():
# 页面跳转 redirect函数就是response对象的页面跳转的封装
# Location: http://www.baidu.com
return redirect("http://www.baidu.com")
重定向到自己写的视图函数
from flask import url_for
# 内容响应
@app.route("/")
def index():
# [默认支持]响应html文本
# return ""
# 也可以响应json格式代码
data = [
{"id":1,"username":"liulaoshi","age":18},
{"id":2,"username":"liulaoshi","age":17},
{"id":3,"username":"liulaoshi","age":16},
{"id":4,"username":"liulaoshi","age":15},
]
return jsonify(data)
#使用url_for可以实现视图方法之间的内部跳转
# url_for("视图方法名")
@app.route("/login")
def login():
return redirect( url_for("index") )
重定向到带有参数的视图函数
# 路由传递参数
@app.route(‘/user/
自定义状态码和响应头
@app.route(‘/demo4‘)
def demo4():
return ‘状态码为 666‘, 400
"""还可以使用make_response创建Response对象,然后通过response对象返回数据"""
from flask import make_response
@app.route("/rep")
def index7():
response = make_response("ok")
print(response)
response.headers["Company"] = "oldboy" # 自定义响应头
response.status_code = 201 # 自定义响应状态码
return response
http的会话控制
Cookie,token[jwt,oauth]
Session
上一篇:深度学习|GoogLeNet
下一篇:php 错误提示