API接口简单使用(一):Python中使用Flask封装网络接口
本文描述了在Python中使用Flask框架封装API接口的方法。通过实践操作,分别实现了简单文本返回接口、参数传递、JSON格式数据返回接口,以及图片返回接口。此外,文章还简单介绍了浏览器开发工具的使用,测试工具Postman的使用。文中对操作过程的描述详细具体,便于初学者进行使用。
一、概述
记录时间 [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/
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)