Python Flask 开发 - Flask 快速上手(Flask 最简单的案例、Flask 处理跨域、Flask 基础接口)

一、Flask 最简单的案例

  1. 安装 flask 模块
shell 复制代码
pip install flask
  1. 导入 flask 模块,实现最简单的案例
python 复制代码
from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello():
    return 'Hello World'


if __name__ == '__main__':
    app.run()

二、Flask 处理跨域

  1. 安装 flask-cors 模块
shell 复制代码
pip install flask-cors
  1. 导入 flask-cors 模块,处理跨域
python 复制代码
from flask_cors import CORS

...

CORS(app)

三、Flask 基础接口

1、不带参数的 GET 请求
python 复制代码
@app.route('/test')
def test():
    return 'Test Page'
js 复制代码
// Promise 风格

fetch("http://127.0.0.1:5000/test", {
    method: "GET",
})
    .then((response) => response.text()) // 解析数据
    .then((data) => console.log(data)) // 处理数据
    .catch((error) => console.error("Error:", error)); // 处理错误
js 复制代码
// async await 风格

try {
    const response = await fetch("http://127.0.0.1:5000/test", {
        method: "GET",
    });

    const data = await response.text();

    console.log(data);
} catch (error) {
    console.error("Error:", error);
}
2、带参数的 GET 请求
  1. 路径参数
python 复制代码
@app.route('/showUsername/<username>')
def show_username(username):
    print(f'username type: {type(username)}')
    return f'username: {username}'
js 复制代码
try {
    const response = await fetch("http://127.0.0.1:5000/showUsername/test123", {
        method: "GET",
    });

    const data = await response.text();

    console.log(data);
} catch (error) {
    console.error("Error:", error);
}
  1. 查询参数
python 复制代码
@app.route('/showUserId')
def show_userId():
    userId = request.args.get('userId')
    print(f'userId type: {type(userId)}')
    return f'userId: {userId}'
js 复制代码
try {
    const response = await fetch("http://127.0.0.1:5000/showUserId?userId=test123", {
        method: "GET",
    });

    const data = await response.text();

    console.log(data);
} catch (error) {
    console.error("Error:", error);
}
3、POST 请求
  1. 表单数据
python 复制代码
@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    password = request.form['password']
    print(f'username type: {type(username)}')
    print(f'password type: {type(password)}')
    print(f'username: {username}, password: {password}')

    return 'Login Page'
js 复制代码
const formData = new FormData();
formData.append("username", "admin");
formData.append("password", "123456");

try {
    const response = await fetch("http://127.0.0.1:5000/login", {
        method: "POST",
        body: formData,
    });

    const data = await response.text();

    console.log(data);
} catch (error) {
    console.error("Error:", error);
}
  1. JSON 数据
python 复制代码
@app.route('/login', methods=['POST'])
def login():
    data = request.get_json()
    username = data['username']
    password = data['password']
    print(f'username type: {type(username)}')
    print(f'password type: {type(password)}')
    print(f'username: {username}, password: {password}')

    return 'Login Page'
js 复制代码
try {
    const response = await fetch("http://127.0.0.1:5000/login", {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
            username: "admin",
            password: "123456",
        }),
    });

    const data = await response.text();

    console.log(data);
} catch (error) {
    console.error("Error:", error);
}
相关推荐
cpolar技术支持1 小时前
外网测试机的异常传不回内网?自托管 Sentry,用 cpolar 打通错误上报链路
python·nginx·docker·cpolar·sentry
小小龙学IT1 小时前
Python SQLAlchemy 2.0 深度解析:从 Core 到 ORM 的数据访问双引擎
开发语言·数据库·python
2601_962885721 小时前
如何用 Python 计算 ROC 变动率指标做动量分析?
开发语言·python·算法
在世修行1 小时前
干货:文件上传端点解析
python·fastapi·接收上传
海绵宝宝转agent1 小时前
Pico 学习笔记 Harness 设计、历史压缩、三类目录与缓存复用
笔记·学习·缓存
2301_777998341 小时前
TCP协议:滑动窗口与流量控制
服务器·网络·网络协议·tcp/ip·php
潼心1412o2 小时前
C++初阶(长期更新)第9讲:string(上)
开发语言·c++
朝朝辞暮i2 小时前
C++ 第 39 章: 阶段性总复习——类、对象、构造、继承、this、指针与智能指针
开发语言·c++·算法·ros2
高频因子挖掘机2 小时前
批量行情返回后,怎样把请求失败的股票单独挑出来?
后端·github·api
我命由我123452 小时前
Photoshop - Photoshop 使用仿制图章工具移除对象
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·学习方法