C#与python交互(flask发送Get/Post请求)

该篇文章详细描述了如何使用Python的Flask库处理来自C#的GET和POST请求,以及C#如何通过HttpClient发送请求并解析响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先运行python,再运行C#

**ps: 注意修改端口号**

python发送Get/Post请求

# -*- coding: utf-8 -*- 
# Time : 2024/1/25 15:52 
# Author : YY
# File : post_test.py
# Content:提交数据给客户端
from flask import Flask, request, jsonify, redirect, render_template, url_for

app = Flask(__name__)  # 实例化对象


@app.route('/test/stats/', methods=["POST", "GET"])
def display():
    try:
        print('request method:', request.method)
        if request.method == "POST":
            data = request.get_json()  # 传入的数据
            print("data:", data)
            get_id = data.get("id")
            get_Seconds = int(data.get("Seconds"))
            if get_id is None or get_Seconds is None:
                return jsonify(msg="缺少参数")
            elif get_id == '500' and get_Seconds > 240:
                r = {
   
   'flag': '1'}  # 假设这是你的字典
                # 检查键 'flag' 是否存在
                if 'flag' in r:
                    print(r['flag'])  # 如果键存在,则打印对应的值
                    return jsonify(r)
                else:
                    print("键 'flag' 不存在于字典中。")  # 如果键不存在,则打印错误消息
                    return jsonify({
   
   'flag': '0'})
            else
一、项目简介 构建一套基于云端的 USB 存储控制系统,通过 Web 控制台部署在 Windows/macOS 客户端的 Agent 通信,实现对 USB 接口使用权限(只读、读写、禁用)的远程管理。系统支持租户隔离,具备商业 SaaS 属性、易用美观的 UI、全栈模块化设计。构建一套 多租户 USB 存储控制系统,用于企业远程控制并审计其所有 Mac/Windows 终端设备的 USB 存储行为,包括接口状态、文件读写操作等。系统支持多租户 SaaS 运营,提供现代化 Web 控制台、Agent 客户端及策略下发、审计溯源、安全机制等功能。 ⸻ 二、架构设计 • Web 服务端(Python 3 + FastAPI/Flask) • Agent 服务端(Python 3 + FastAPI,轻量 HTTP API) • Agent 客户端 • macOS:Swift 实现,隐藏后台启动、保护卸载、安全通信 • Windows:C# 实现,功能对等 • 数据库:开发使用 SQLite,生产使用 MySQL,结构保持一致 • 全局配置:统一从 config.yaml 加载:域名/IP、端口、数据库连接、检查间隔、卸载密码 等 • 启动方式:命令行:python3 app.py {web|agent|both|setup} • CI/CD、监控、权限控制:基于 Token + RBAC,HTTPS+证书验证,日志告警 ⸻ 三、数据库表结构 表名 字段 说明 tenants id、name、license_limit、status、created_at 租户信息 users id、tenant_id、username、password_hash、role、created_at 用户信息(租户或管理员) devices id、tenant_id、uuid、hostname、os、cpu、memory、battery、usb_status、last_seen、policy_id 设备基本信息状态 policies id、tenant_id、name、mode(readonly/readwrite/disable)、group_id、created_at 策略定义 device_groups id、tenant_id、name、created_at 设备组 device_group_map id、device_id、group_id 组设备映射 config key、value 全局配置缓存 logs id、tenant_id、device_id、message、level、timestamp 日志告警记录 ⸻ 四、API 路径设计 Web APIPOST /api/login:用户登录,返回 Token • GET /api/tenants、POST /api/tenants:查看/新增租户(仅管理员) • GET /api/devices、GET /api/devices/{id}:设备列表详情 • GET/POST/PUT/DELETE /api/policies[/{id}]:策略 CRUD • GET/POST/PUT/DELETE /api/groups[/{id}]:分组 CRUD • GET/PUT /api/config:系统设置读取/写入 Agent Service APIPOST /agent/check-in:设备上报基本资产信息 • GET /agent/license?uuid={uuid}:获取许可状态 • GET /agent/policy?uuid={uuid}:获取 USB 控制策略 • POST /agent/report:上报当前 USB 状态 ⸻ 五、模块交互流程 Web 服务端 • 登录鉴权 + RBAC • 多租户查询授权 • 策略、组设备的 CRUD 配置 • License 数量管理(自动计算租户已用设备数量) • 设备管理(统计、在线状态、详情) • 日志、告警展示查询 • 设置页:Agent 通信间隔、卸载密码、网络接口等 Agent 服务端 • 提供轻量 REST 接口供客户端访问 • 检查租户许可、策略,返回 JSON(含策略版本号) Agent 客户端 • 自启动、隐藏进程、防卸载机制(卸载需输入密码) • 周期性(默认 5 分钟)向 Agent 服务端进行: 1. check-in(资产上报) 2. 获取 license:如无许可,停用 USB 策略 3. 获取 policy:如果有更新则本地缓存并执行 4. 上报 USB 当前状态 • 实时控制 USB 接口权限(依据 policy 本地生效,即使离线) ⸻ 六、UI 页面结构 1. 登录页 2. 首页 Dashboard:全局/租户统计图表、活跃设备比例、策略使用情况 3. 设备列表页:设备搜索、列表展示、设备状态过滤 4. 设备详情页:展示资产、组信息、策略、状态日志、手动同步按钮 5. 策略管理页:展示、创建、编辑、删除策略,可指定组或单个设备 6. 组管理页:分组 CRUD、组内设备管理 7. 系统设置页:通信设置、卸载密码设置、许可通知阈值 8. 日志告警页:可按租户/设备/级别/时间查阅 9. Agent 下载页:根据平台提供 macOS/Windows 安装包,提示卸载密码设定 UI 样式建议: • 现代化仪表板风格 • 明亮主题,主色深蓝/蓝绿,按钮(新增、删除)动效精准,提示对话框确认 • 可用性高,清晰模块划分、响应式布局 ⸻ 七、商业价值 • 多租户支持 & License 管理化,适用于 B 企业对 C 企业分销 • SaaS 模式收费,Starter/Standard/Enterprise 套餐按设备数量分级定价 • 提供安全合规性,帮助用户满足数据审计和设备使用控制要求 • 可扩展更多 I/O 管制功能,如网络控制、安全隔离等 ⸻ 八、提示词:给 AI 生成代码/模块实现 A. 初始化项目模块 # 初始化项目结构 – 创建目录:api、agent_server、agent_client、config – 初始化 FastAPI 应用,配置 config.yaml 加载模块 B. 数据模型定义(SQLAlchemy 示例) class Tenant(Base): __tablename__ = "tenants" id = Column(Integer, primary_key=True) name = Column(String, unique=True) ... C. Web API 实现(示例) @router.post("/api/policies") async def create_policy(...): # RBAC 判断 + MySQL/SQLite ORM 写入 + 返回 JSON D. Agent 服务端 @app.post("/agent/check-in") async def checkin(req: DeviceCheckin): ... E. Agent 客户端(Swift/C#)实现逻辑 Timer.scheduledTimer(withTimeInterval: config.check_interval) { checkIn(); getLicense(); getPolicy(); reportStatus() } F. UI 页面 • React/Vue Ant Design 实现布局 • DeviceList、PolicyForm、GroupTree、DashboardCharts 组件 G. 安全、测试部署 不使用Docker ,不使用nginx,通过 python3 run.py both 执行 本系统所有API和操作均严格遵循基于角色的访问控制(RBAC)、租户隔离、超级管理员、审计日志等最佳实践: - **RBAC权限模型**:分为超级管理员(super_admin)、管理员(admin)、租户用户(tenant_user)。不同角色可访问的API范围不同。 - **租户隔离**:非admin/super_admin用户仅能访问本租户数据,所有查询自动加租户过滤。 - **超级管理员**:可管理全局线索、Agent构建、全局配置等敏感操作。 - **审计日志**:所有关键操作均自动记录,便于合规追溯。 - **权限错误**:所有权限不足返回均为中英双语,便于国际化。
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值