Flask框架接口实现
get请求参数在@app.route("/index{参数}", methods=["GET"])
post请求参数在函数体内获取
1. 基础模块
# 导入Flask类库
from flask import Flask
# 创建应用实例
app = Flask(__naem__)
# 视图函数(路由)
@app.route('/')
def index():
return '<h1>Hello Flask!<h1>'
# 启动实施(只在当前模块运行)
if __name__ == '__main__':
app.run()
run参数
参数 | 说明 | 默认值 |
---|---|---|
debug | 代码更新是否自动重启 | False |
theaded | 是否开启多线程 | False |
port | 指定端口 | 5000 |
host | 指定主机(设置0.0.0.0可以通过本地IP访问) | 127.0.0.1 |
2. 获取form表单数据
# coding:utf-8
@app.route("/index", methods=["POST"])#设置端口和请求方式
def index():
# requset.form获取表单格式的请求参数(name=zhangsan&age=18) (类似字典的对象)
name = request.form.get("name") # 获取表单格式的请求参数
age = request.form.get("age", "默认值")
# get方法只能拿到多个同名参数的第一个,getlist可以获取所有。
name_li = request.form.getlist("name") # 获取同名参数的所有值,返回列表
# 如果请求体的数据不是表单格式的(如json格式,xml格式),可以通过request.data获取
print(request.data) # {"name": "zhangsan", "age": 18} (Json字符串)。request.get_json() 直接返回字典,而不是Json字符串(需要前端设置请求头)。
# args是用来提取url中?后拼接的参数(查询字符串QueryString)
city = request.args.get("city") # 127.0.0.1:5000/index?city=shenzhen (类似字典的对象)
return "hello name=%s, age=%s, city=%s, name_li=%s" % (name, age, city, name_li)
request常用的属性如下:
属性 | 说明 | 类型 |
---|---|---|
data | 记录请求的数据,并转换为字符串 | * |
form | 记录请求中的表单数据 | MultiDict |
args | 记录请求中的查询参数 | MultiDict |
cookies | 记录请求中的cookie信息 | Dict |
headers | 记录请求中的报文头 | EnvironHeaders |
method | 记录请求使用的HTTP方法 | GET/POST |
url | 记录请求的URL地址 | string |
files | 记录请求上传的文件 | * |
3.获取json数据
方法1:
# 创建一个接口 指定路由和请求方法 定义处理请求的函数
@app.route(rule='/', methods=['POST'])
def everything():
# 获取 JSON 格式的请求体 并解析
request_body = request.get_json()
print('Request info: ', request_body)
# 生成响应信息
response_info = {'msg': '收到'}
print('Response info:', response_info)
# 将响应信息转换为 JSON 格式
response_body = jsonify(response_info)
# 最终对请求进行相应
return response_body
方法2:
from flask import Flask
from flask import jsonify
from flask import request
import json
@app.route("/flask/login", methods=['POST'])
def login():
data = request.get_data()
data = json.loads(data)
username = data['username']
password = data['password']
return jsonify({"login": Login.login(username, password)}) # 返回布尔值
区别:
-
get_data():是以数据的格式进行获取,如果你传输的是一个标准的json,那他依然是个json格式;
-
get_json():只能去解析json格式的传递参数
4.使用IP6端口
if __name__ == '__main__':
app.run(host='::',port=5000,debug=False) #IP6全网开启
app.run(host='0.0.0.0',port=5000,debug=False) #IP4全网开启
本文来自博客园,作者:KMP,转载请注明原文链接:https://www.cnblogs.com/touchTomorrow/p/16371996.html