Python中使用Flask封装API接口(一):简单入门指南
一、概述
记录时间 [2024-4-2]
本文讲述的是API
接口的简单使用:在Python
中使用Flask
封装网络接口,可以通过调用API
接口,实现请求参数/文件的上传,以及自定义文本/JSON
格式/图片等的返回。
1. HTTP请求
HTTP
请求是指从客户端到服务器端的请求消息,包括请求行、头部和体,流程为客户端发送请求,服务器处理并返回响应。
常见的HTTP
请求有:
序号 | 方法 | 描述 |
---|---|---|
1 | GET |
用于请求服务器上的资源,不会对服务器资源产生任何影响。 |
2 | POST |
向服务器发送数据,例如登录、上传文件等,会让服务器进行处理,并对服务器资源产生影响。 |
3 | PUT |
从客户端向服务器传送的数据取代指定的文档的内容。 |
4 | DELETE |
请求服务器删除指定的页面。 |
2. API
API(Application Programming Interface)
,即”应用程序编程接口“,是一组预先定义的函数,允许应用程序和开发人员基于软件或硬件访问一组例程,而无需访问源代码或理解内部工作机制的细节。
3. Flask
Flask
是一个使用Python
编写的轻量级Web
应用框架,较其他同类型框架更为灵活、轻便、安全且容易上手。
Flask
的基本模式为:在程序里将一个视图函数分配给一个URL
,每当用户访问这个URL
时,系统就会执行给该URL
分配好的视图函数,获取函数的返回值并将其显示到浏览器上。
但,相比于一些大型框架如Django
,Flask
的功能相对较少,需要依赖扩展库来实现一些功能。缺乏一些高级功能,不适合大型应用。
这里附带上Flask
官方文档,里面记载了详细的使用方法,如果觉得看文档比较麻烦的话,可以直接看文章,需要用到的部分已经在文章中进行了摘录。
二、封装简单的网络接口
1. 使用PyCharm创建Python项目
如图所示,打开PyCharm
,点击左上角的File
,然后New Project
,新建一个Python
项目。
pythonProject
是我们的Project
放置的位置,需要是一个空文件夹。Python Interpreter
。文中选择的是先前安装的conda
中附带的,你也可以选择新建(选上面的New environment
即可)。Create
,完成创建。创建过程需要下载一些配置,耐心等待下即可。
2. 新建测试文件
点击pythonProject
,右键新建Python
文件,命名为flaskTest
3. 构建Flask实例
在flaskTest.py
中编写一个简单的测试实例,然后右键运行Run
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world(): # put application's code here
return 'Hello World!'
if __name__ == '__main__':
app.run()
查看反馈,可以看出项目运行在主机的5000
端口
# 可以看出项目运行在主机的5000端口
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
* Serving Flask app 'flaskTest'
* Debug mode: off
打开浏览器查看一下吧。
访问127.0.0.1:5000
这个URL
时,就会得到程序返回的Hello World!
4. 实例详解
接下来我们对这个Flask
实例进行详解:
# Flask是使用Flask框架需要导入的依赖
from flask import Flask
# app是Flask构建的实例
app = Flask(__name__)
# @app.route('/')
# 这里定义了HTTP请求的方式,如 GET/POST... 默认为GET请求
# 我们也可以自定义请求方式,如 @app.post('/')
# ('/')中 / 代表请求的URL路径,此时浏览器中访问路径为 127.0.0.1:5000
# ('/hello') 此时浏览器中访问路径为 127.0.0.1:5000/hello
@app.route('/')
def hello_world(): # put application's code here
return 'Hello World!'
# def为python中定义的函数
# hello_world()是函数名
# return后面的即为HTTP请求返回的结果
if __name__ == '__main__':
app.run()
# app.run() 运行这个实例
# 默认本机访问,默认5000端口
# 我们可以进行自定义
# 如 app.run(host='0.0.0.0', port=5001)
# '0.0.0.0'表示允许全部主机访问,port=5001 指定端口为5001
三、测试方式
在进行其他复杂的网络接口使用前,我们先对
HTTP
请求的几种测试方式进行简单介绍,方便后续使用。
1. 浏览器直接方式
浏览器直接方式是最方便的,只要输入网址,也就是请求的URL
即可。
但是,它只能发送GET
请求。
回到我们上面的测试界面,在浏览器中按下F12
键(部分电脑可能是FN+F12
)调出开发工具,这对于网页开发和调试非常有用。
2. Postman
Postman
是一个接口测试工具,在做接口测试的时候,Postman
相当于一个客户端,它可以模拟用户发起的各类HTTP
请求,将请求数据发送至服务端,获取对应的响应结果。
Postman
能够发送任何类型的 HTTP
请求 (GET
, HEAD
, POST
, PUT
…),且可以附带各种类型的参数和请求头。
感兴趣的朋友可以点击这里,进行下载安装。
3. HTML
我们也可以写一个简单的HTML
文件来发送HTTP
请求。
具体的方式是新建一个test.html
文件,然后以记事本方式打开,然后进行编写。
例如:
<html>
<head>
<title>HTTP请求测试</title>
</head>
<body>
<!--action中写入请求的URL-->
<!--method中写入请求的方法,如 get/post...-->
<form action="http://127.0.0.1:5000" method="get" enctype="multipart/form-data">
<input type="submit" value="测试">
</form>
</body>
</html>
然后保存文件,双击在浏览器中运行,点击测试即可。
四、其他复杂的网络接口
1. 请求参数传递
创建方法
上文创建的Flask
实例中,我们返回的是简单的文本,接下来我们实现下参数传递。
在发送HTTP
请求时带上参数,并将自定义的参数返回给客户端。
# 在flaskTest.py中编写一个新的函数
@app.route('/text/<id>')
def text(id):
return "hello %s" % id
浏览器中测试
我们首先在浏览器中测试
按下F12
键(部分电脑可能是FN+F12
)调出开发工具
输入网址,输入的格式:
ip地址:端口号/请求路径/待传参数
http://127.0.0.1:5000/text/test
按下回车,我们就能得到服务端返回的结果,其中,test
就是我们刚刚传入的参数。
hello test
在开发工具中选择网络,点击test
进行查看(没有就刷新一下),可以看到这个请求的详细信息,如请求网址/方法/状态等等。
Postman测试
打开刚刚下载的Postman
,选择GET
方法,输入URL
和参数,然后点击Send
,就能得到返回结果。
2. JSON格式返回
编写/运行Flask实例
接下来我们实现JSON
格式数据返回的接口。
创建flaskJSON.py
文件,编写Flask
实例:
from flask import Flask,jsonify
app = Flask(__name__)
# json数据返回接口
@app.route('/json')
def return_json():
data = [{'msg':'This is a json TEST'},{'msg1':'This is a json TEST111'}]
return jsonify(data)
if __name__ == '__main__':
app.run()
运行,然后进行请求测试(浏览器/Postman
均可):
http://127.0.0.1:5000/json
在Postman中查看结果
在浏览器中查看结果
3. 图片形式返回
编写/运行Flask实例
接下来我们实现图片形式返回的接口。
创建flaskImage.py
文件,编写Flask
实例:
from flask import Flask,send_file
app = Flask(__name__)
# 图片返回接口
@app.route('/image')
def return_image():
image_path = 'yfx.jpg'
return send_file(image_path, mimetype='image/jpeg')
if __name__ == '__main__':
app.run()
进行测试
运行,然后进行请求测试(浏览器/Postman
均可):
http://127.0.0.1:5000/image
查看结果(图片来自网络,仅用于测试查看):
五、总结
本文描述了在Python
中使用Flask
框架封装API
接口的方法。通过实践操作,分别实现了简单文本返回接口、参数传递、JSON
格式数据返回接口,以及图片返回接口。此外,文章还简单介绍了浏览器开发工具的使用,测试工具Postman
的使用。
文中对操作过程的描述详细具体,便于初学者进行使用。关于文件上传的接口编写将在下一篇中实现。
一些参考资料
Flask
官方文档:https://dormousehole.readthedocs.io/en/latest/quickstart.html
Postman
官网:https://www.postman.com/
作者:蟾宫曲