Python flask模块接口开发学习总结
引言
Flask 是一个简单且十分强大的Python web 框架。它被称为微框架,“微”并不是意味着把整个Web应用放入到一个Python文件,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或 Web服务。因此flask能很方便构建一个web服务,给外部也可以叫做客户端提供web服务,针对flask框架这种特点我们可以很容易构建API接口,供客户端访问。
Flask接口开发示例
首先安装需要的Flask模块,如果你的环境已经安装了pip则键入:pip install flask即可安装完成
1.1 构建GET请求方法的接口
在Pycharm中新建py文件,编辑如下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # -*- coding: utf-8 -*- import flask,json import time server = flask.Flask(__name__) # 创建一个服务,把当前这个python文件当做一个服务 @server .route( '/VIID/System/Time' , methods = [ 'get' ]) # @server.route()可以将普通函数转变为服务、接口的路径、请求方式,如果不写methods则默认get方法 def Time(): '''查询字符串:无,消息体:无,返回结果:SystemTime''' response_data = { "SystemTimeObject" : { "VIIDServerID" : "123" , "TimeMode" : "1" , "LocalTime" : time.strftime( '%Y%m%d%H%M%S' , time.localtime(time.time())), } } return json.dumps(response_data, ensure_ascii = False ) if __name__ = = '__main__' : server.run(debug = True , port = 5000 , host = '10.82.25.11' ) # 指定访问端口、host |
然后运行该py文件,则该文件运行在本地就是一个web服务,用浏览器或者postman尝试访问该服务的URL即可
浏览器访问:
postman发请求访问:
浏览器或者postman请求完成后,在Pycharm的输出栏会输出如下:
其它的请求如POST、PUT、DELETE等方法,在methods参数中指明即可,不过POST、PUT、DELETE等方法不能由浏览器直接访问,因为浏览器默认访问时是get方法,可以用postman按指定的方法发请求
1.2 获取带json格式请求体的接口
有时客户端发送的请求是带json格式的,这时需要获取请求的json,编辑代码如下:
1 2 3 4 5 6 7 8 9 10 | @server .route( '/data' ,methods = [ 'post' ]) def post_json(): if flask.request.is_json: print (flask.request.json) name = flask.request.json.get( 'name' ) # 获取json请求体的第一个参数的值 age = flask.request.json.get( 'age' ) # 获取json请求体的第二个参数的值 data = { 'name' :name, 'age' :age} return json.dumps(data,ensure_ascii = False ) else : return json.dumps({ 'msg' : '请传json格式参数' },ensure_ascii = False ) |
使用postman作为客户端发送带json请求体的请求,如下图:
1.3 获取get请求中发送的参数
flask提供的方法是:
1 | value = flask.request.args.get( 'name' ) # 获取get请求参数name的值 |
1.4 构建动态URL以及响应体的重定向
很多时候,客户端请求的url是变化的,也就是带有动态参数的,flask也是可以轻松的构建提供动态参数的url资源服务并重定向响应体,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # -*- coding: utf-8 -*- import flask,json from flask import url_for,redirect server = flask.Flask(__name__) # 创建一个服务,把当前这个python文件当做一个服务 @server .route( '/data' ) def data(): # 返回data data = { 'VideoSliceInfoObject' : { 'VideoID' : 'esse elit' , 'AudioCodeFormat' : 'commodo' } } return json.dumps(data, ensure_ascii = False ) @server .route( '/data/<ID>/Info' , methods = [ 'post' ]) def data_redirect( ID ): return redirect(url_for( 'data' , guest = ID )) if __name__ = = '__main__' : server.run(debug = True , port = 5000 , host = '10.82.25.11' ) # 指定访问端口、host |
后面无论postman或者客户端发送的url中的ID参数是啥,都可以响应
1.5 重新构建响应头和响应状态码
有时在与第三方系统对接时,需要返回携带响应头消息和指定的响应状态码,在flask中也是可以构建自定义的响应消息的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # -*- coding: utf-8 -*- import flask,json server = flask.Flask(__name__) # 创建一个服务,把当前这个python文件当做一个服务 @server .route( '/data' ,methods = [ 'post' ]) def post_json(): if flask.request.is_json: print (flask.request.json) name = flask.request.json.get( 'name' ) # 获取json请求体的第一个参数的值 age = flask.request.json.get( 'age' ) # 获取json请求体的第二个参数的值 data = { 'name' :name, 'age' :age} # 构建响应头域和状态码 resp = flask.make_response(json.dumps(data, ensure_ascii = False )) resp.status = "666" resp.headers[ "python" ] = "python flask" return resp else : return json.dumps({ 'msg' : '请传json格式参数' },ensure_ascii = False ) if __name__ = = '__main__' : server.run(debug = True , port = 5000 , host = '10.82.25.11' ) # 指定访问端口、host |
运行该py文件,在postman中发送请求,查看响应信息,如下图,变成的我们自定义设置的响应头和状态码
这样我们就完全自定义了响应的头和状态码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结