当前位置: 首页 > news >正文

python使用Flask框架开发API

Flask是一个基于Python的轻量级Web应用程序框架。

安装依赖库

pip install flask
pip install werkzeug

上传接口

Python

from flask import Flask, request
from werkzeug.utils import secure_filenameapp = Flask(__name__)@app.route('/upload', methods=['POST'])
def upload_file():f = request.files['file']print(request.files)f.save("image/"+secure_filename(f.filename))return 'file uploaded successfully'if __name__ == '__main__':app.run(debug = True)

Html调用示例

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Flask示例</title>
</head><body><form action = "http://localhost:5000/upload" method = "POST" enctype = "multipart/form-data"><input type = "file" name = "file" /><input type = "submit" value="提交"/></form></body>
</html>

下载接口

Python

from flask import Flask, send_file
import osapp = Flask(__name__)base_path = '/upload/image/'@app.route('/download/<string:filename>')
def download(filename):file_path = os.path.join(base_path, filename)return send_file(file_path, as_attachment=True)if __name__ == "__main__":app.run(debug = True)

图片查看接口

 Python

from flask import Flask, request, make_response
import osapp = Flask(__name__)base_path = "/upload/image/"@app.route('/image/<string:filename>', methods=['GET'])
def show_photo(filename):if request.method == 'GET':if filename is None:passelse:image_data = open(os.path.join(upload_path, '%s' % filename), "rb").read()response = make_response(image_data)response.headers['Content-Type'] = 'image/jpeg'return responseelse:passif __name__ == '__main__':app.run(debug = True)

Form表单请求接口

Python

from flask import Flask, requestapp = Flask(__name__)@app.route('/result',methods = ['POST'])
def result():result = request.formprint("name:", result["name"])print("code:", result["code"])return 'post form successfully'if __name__ == '__main__':app.run(debug = True)

Html调用示例

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Flask示例</title>
</head><body><form action = "http://localhost:5000/result" method = "POST"><p>姓名 <input type = "text" name = "name" /></p><p>分数: <input type = "text" name = "code" /></p><p><input type = "submit" value = "提交" /></p></form></body>
</html>

JSON请求接口

Python

from flask import Flask, requestapp = Flask(__name__)@app.route('/result',methods=['POST'])
def result():params = request.get_json()print(params)return paramsif __name__ == '__main__':app.run(debug = True)

请求示例

curl -X POST -H 'Content-Type: application/json' -d '{"name":"abc","code":123}' http://127.0.0.1:5000/result

加载模板

Python

from flask import Flask, render_templateapp = Flask(__name__)@app.route('/hello')
def hello():return render_template(‘hello.html’)@app.route('/hello/<user>')
def hello_name(user):return render_template('hello2.html', name = user)if __name__ == '__main__':app.run(debug = True)

hello2.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Flask HTTP请求方法处理</title>
</head><body><h1>Hello {{ name }}!</h1></body>
</html>

 配置远程访问

app.run(host="0.0.0.0",port=5000)
# host (主机IP地址,可以不传)默认localhost
# port 端口号,可以不传,默认5000

跨域支持

from flask import Flask,jsonify
from flask_cors import CORS"""
pip install flask flask-cors
"""app = Flask(__name__)
CORS(app)@app.route('/index', methods=['POST','GET'])
def index():return jsonify('Start!')if __name__ == "__main__":app.run(host="0.0.0.0",port=8000)

相关文章:

python使用Flask框架开发API

Flask是一个基于Python的轻量级Web应用程序框架。 安装依赖库 pip install flask pip install werkzeug 上传接口 Python from flask import Flask, request from werkzeug.utils import secure_filenameapp Flask(__name__)app.route(/upload, methods[POST]) def uploa…...

使用hexo+gitee从零搭建个人博客

一、环境准备 1.Node.js&#xff1a;下载 | Node.js 中文网 (nodejs.cn) &#xff0c;Hexo 是基于Node.js 的博客框架 教程&#xff1a;https://blog.csdn.net/weixin_52799373/article/details/123840137 node -v npm -v 安装 Node.js 淘宝镜像加速器 &#xff08;cnpm&am…...

绝地求生:杜卡迪来了,这些摩托车技巧不学一下吗?

摩托车在远古版本和现在完全不一样&#xff0c;虽然容易翻车造就了一批玩家“摩托杀手”的外号&#xff0c;但是速度可比今天快多了。 后来在蓝洞的削弱了其加速度&#xff0c;虽然资料上写着最高时速155km/h&#xff0c;但是平时游戏中一般只能拉到110~120km/h。这里写一点摩托…...

openstack安装dashboard后登录网页显示404错误

1. 2.进入该目录vim /etc/httpd/conf.d/openstack-dashboard.conf 增加这一行 WSGIApplicationGroup %{GLOBAL} 重启httpd后就可以访问了...

c# Xml 和 Json 转换方法记录

c# xml 转 json 在C#中&#xff0c;可以使用下面几种方法将XML转换为JSON&#xff1a; 使用Newtonsoft.Json库&#xff1a; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.Xml;// 从XML字符串转换为JSON字符串 string …...

OpenHarmony南向开发案例:【智能垃圾桶】

样例简介 智能垃圾桶可以通过数字管家应用来监测垃圾桶当前可用容量&#xff0c;提醒主人及时处理垃圾&#xff1b;通过日程管家可以实现和其他智能设备联动。 核心组件位置功能距离传感器置于垃圾桶盖内侧感应垃圾量红外传感器置于垃圾桶前端感应是否有人靠近光敏电阻开发板…...

每日一题---OJ题: 旋转数组

片头 嗨! 小伙伴们,咱们又见面啦,今天我们一起来学习一道OJ题---旋转数组 emmm,看上去好像没有那么难,我们一起来分析分析 比如: 数组里面有7个元素,分别为 1, 2, 3, 4, 5, 6, 7 , 现在我们将数组中的元素向右轮转3个位置 第一次轮转:将最后一个元素"7"放在第一个…...

基于单链表的通讯录C语言实现

关于单链表的详细了解请见博主的另一篇博客&#xff0c;本文旨在对单链表进行应用&#xff0c;采用C语言编写。 http://t.csdnimg.cn/iBpFa 一、驱动层 1.1 SList.h #pragma once#include<stdio.h> #include<stdlib.h> #include<assert.h> #include"…...

【深度学习】YOLO-World: Real-Time Open-Vocabulary Object Detection,目标检测

介绍一个酷炫的目标检测方式&#xff1a; 论文&#xff1a;https://arxiv.org/abs/2401.17270 代码&#xff1a;https://github.com/AILab-CVC/YOLO-World 文章目录 摘要Introduction第2章 相关工作2.1 传统目标检测2.2 开放词汇目标检测 第3章 方法3.1 预训练公式&#xff1a…...

debian安装和基本使用

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Kubernetes航线图&#xff1a;从船长到K8s掌舵者》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Debian系统简介 2、Debian与其他Lin…...

nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)

一、安装nvm 1. 下载nvm 点击 网盘下载 进行下载 2、双击下载好的 nvm-1.1.12-setup.zip 文件 3.双击 nvm-setup.exe 开始安装 4. 选择我接受&#xff0c;然后点击next 5.选择nvm安装路径&#xff0c;路径名称不要有空格&#xff0c;然后点击next 6.node.js安装路径&#…...

优优嗨聚集团:如何优雅地解决个人债务问题,一步步走向财务自由

在快节奏的现代生活中&#xff0c;个人债务问题似乎已成为许多人不得不面对的挑战。正确处理个人债务&#xff0c;不仅关系到个人信用和财务状况&#xff0c;更是实现财务自由的重要一步。本文将为您提供一些实用的建议&#xff0c;帮助您优雅地解决个人债务问题&#xff0c;走…...

SpringCloud实用篇(四)——Nacos

Nacos nacos官方网站&#xff1a;https://nacos.io/ nacos是阿里巴巴的产品&#xff0c;现在是springcloud的一个组件&#xff0c;相比于eureka的功能更加丰富&#xff0c;在国内备受欢迎 nacos的安装 下载地址&#xff1a;https://github.com/alibaba/nacos/releases/ 启动…...

【嵌入式基础知识学习】AD/DA—数模/模数转换

AD/DA—数模/模数转换概念 数字电路只能处理二进制数字信号&#xff0c;而声音、温度、速度和光线等都是模拟量&#xff0c;利用相应的传感器&#xff08;如声音用话筒&#xff09;可以将它们转换成模拟信号&#xff0c;然后由A/D转换器将它们转换成二进制数字信号&#xff0c…...

Swift中的结构体

Swift中的结构体是一种自定义的数据类型&#xff0c;可用于存储多个相关的值。结构体可以包含属性和方法&#xff0c;从而使其具有特定的功能。 结构体与类相似&#xff0c;但有一些重要的区别。最重要的区别是&#xff0c;结构体是值类型&#xff0c;而类是引用类型。这意味着…...

Selenium - java - 屏幕截图

文档地址 Selenium 浏览器自动化项目 | Selenium 安装 <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.19.1</version></dependency>使用 创建WebDriver实例 …...

【论文阅读——SplitFed: When Federated Learning Meets Split Learning】

级别CCFA 1.摘要 联邦学习&#xff08;FL&#xff09;和分割学习&#xff08;SL&#xff09;是两种流行的分布式机器学习方法。两者都采用了模型对数据的场景&#xff1b;客户端在不共享原始数据的情况下训练和测试机器学习模型。由于机器学习模型的架构在客户端和服务器之间…...

Python使用方式介绍

1.安装与版本和IDE 1.1 python2.x和python3.x区别 python2在2020已经不再维护&#xff0c;目前主流开发使用python3. 二者语法上略有区别&#xff1a;输入输出、数据处理、异常和默认编码等&#xff0c;如:python3中字符串为Unicode字符串&#xff0c;使用UTF-8编码&#xff…...

浅述python中NumPy包

NumPy&#xff08;Numerical Python&#xff09;是Python的一种开源的数值计算扩展&#xff0c;提供了多维数组对象ndarray&#xff0c;是一个快速、灵活的大数据容器&#xff0c;可以用来存储和处理大型矩阵&#xff0c;支持大量的维度数组与矩阵运算&#xff0c;并针对数组运…...

jvm的面试回答

1、jvm由本地方法栈、虚拟机栈、方法区、程序计数器、堆组成&#xff0c;其中堆和方法区是线程间共享的&#xff0c;程序计数器、虚拟机栈和本地方法栈是线程私有的。 2、虚拟机栈&#xff1a; 保存每个java方法的调用、保存局部变量表、等 栈可能出现内存溢出&#xff0c;如果…...

英雄联盟Akari助手:5大核心功能提升你的游戏体验终极指南

英雄联盟Akari助手&#xff1a;5大核心功能提升你的游戏体验终极指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否厌倦了在英雄联盟对…...

用LDAP Browser连接OpenLDAP时,这3个配置细节坑了我一整天

用LDAP Browser连接OpenLDAP时&#xff0c;这3个配置细节坑了我一整天 第一次用LDAP Browser连接OpenLDAP服务器时&#xff0c;我本以为照着教程五分钟就能搞定&#xff0c;结果硬是折腾了一整天。明明服务端已经正常启动&#xff0c;客户端工具也装好了&#xff0c;但就是连不…...

SignalTap调试进阶:巧用约束与别名捕获FPGA优化后的关键信号

1. 为什么优化后的信号会"消失"&#xff1f; 很多FPGA工程师都遇到过这样的场景&#xff1a;明明在代码里明确定义了reg和wire信号&#xff0c;但在SignalTap里死活找不到它们的身影。这其实不是工具出了问题&#xff0c;而是Quartus的综合优化在"作怪"。…...

轻量级规则流引擎实践:基于DAG的业务流程编排与解耦

1. 项目概述与核心价值 最近在梳理一些遗留系统的业务流程时&#xff0c;我又一次被那些硬编码在代码里的“if-else”逻辑链折磨得够呛。一个简单的审批流&#xff0c;因为业务规则的细微调整&#xff0c;就需要在多个服务里翻找、修改、测试&#xff0c;牵一发而动全身。这让我…...

Moveit2 automaticaddison mycobot_ros2 代码讲解

github地址 https://github.com/automaticaddison/mycobot_ros2/tree/jazzy 一.mycobot_moveit_config 1.moveit2基本控制 在mycobot_moveit_config下面创建config/mycobot_280 initial_positions.yaml 定义了机械臂所有关节的初始位置 joint_limits.yaml 定义每个关节的…...

番茄小说下载器完整教程:如何轻松保存全网小说到本地

番茄小说下载器完整教程&#xff1a;如何轻松保存全网小说到本地 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 想要永久保存番茄小说平台上的精彩作品吗&#xff1f;这款免费开源的番茄小…...

高版本MATLAB机器人工具箱plot/teach视图兼容性修复实战

1. 问题现象与背景分析 最近在MATLAB 2019b上使用机器人工具箱&#xff08;Robotics Toolbox&#xff09;时遇到了一个奇怪的问题。当我像往常一样调用robot.plot()或者robot.teach()函数时&#xff0c;控制台突然报错&#xff1a;"索引超出数组元素数目(4)"。这个错…...

AI Agent + 指纹浏览器:从0搭建MCP Server实现批量账号自动化管理

我是张大鹏&#xff0c;做了十多年人工智能&#xff0c;带过不少项目。说实话&#xff0c;AI Agent 最难的不是生成内容&#xff0c;是"动手干活"——大模型再强&#xff0c;如果只能输出文字而不能操控真实环境&#xff0c;自动化就永远差最后一公里。最近在研究 In…...

SQLTools-MCP:用AI智能体重构数据库工作流,实现自然语言查询

1. 项目概述&#xff1a;当SQL工具链拥抱AI智能体 如果你是一名和数据打交道的开发者或分析师&#xff0c;每天的工作可能都离不开SQL。从写一个简单的查询&#xff0c;到构建复杂的ETL管道&#xff0c;再到排查某个报表数据不准的问题&#xff0c;我们的大部分时间都花在了与数…...

3步快速部署GitHub中文化插件:告别英文界面的烦恼

3步快速部署GitHub中文化插件&#xff1a;告别英文界面的烦恼 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾经因为GitHub的…...