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全网开启
posted @ 2022-06-13 19:13  KMP  阅读(210)  评论(0编辑  收藏  举报