如何在5分钟内使用Python和Flask创建简单的REST API
本文最初发布于:Python API教程
Python是2020年最受欢迎的编程语言之一。Python开发人员和很多想学习这种编程语言的人都有很多工作机会。正如我们在先前有关学习Python的文章中提到的那样,实践知识是最重要的。
考虑到Python可用于构建应用程序的后端,我决定创建一篇文章,描述如何使用Python,Flask和flask_restful库创建简单的REST API。我将为学生名单建立一个基本的CRUD资源。要遵循本教程,您需要在计算机上安装Python和pip。要检查API,我将使用Postman。
此外,本教程主要侧重于构建API,因此我使用的是模拟数据。在大多数情况下,在制作API时,它会连接到数据库。
在开发过程中,我们将经历以下几点:
- 安装flask和flask_restful
- 创建并初始化文件
- 模拟数据
- 创建StudentsList班级和路线
- 为StudentsList()创建get()和post()方法
- 定义学生班级和路线
- 创建get(),update()和delete()方法
- 测试端点
为了更轻松,更方便,我为那些喜欢从电影中学习的人准备了本教程的视频版本。
开始吧
1.安装Flask和Flask_RESTful
首先,我们必须安装所有必需的库。 Flask是用Python编写的微框架,用于构建Web应用程序。因此,让我们使用以下命令进行安装:
pip install Flask
如果准备就绪,我们可以开始安装Flask_RESTful Flask库:
pip install Flask-RESTful
完成后,我们就可以开始构建我们的API了
2.创建并初始化文件
安装了创建API所需的所有内容后,我们创建一个文件。我将其称为api.py,您可以使用自己喜欢的任何名称,但是请记住Python文件的扩展名应为.py。请在您最喜欢的代码编辑器中打开文件,然后导入一些启动我们的项目所需的内容。
from flask import Flask
from flask_restful import Resource, Api, reqparse
尽管所有内容都在文件顶部至关重要,但让我们使用以下代码初始化API:
app = Flask(__name__)
api = Api(app)
STUDENTS = {}
if __name__ == "__main__":
app.run(debug=True)
太好了,现在我们的API已初始化。接下来,我们将创建模拟数据。
3.模拟数据
在STUDENTS变量内,我们将创建一个按id排序的学生字典。每个学生都有姓名,年龄和规格属性。让我们创建四个简单的用户:
STUDENTS = {
'1': {'name': 'Mark', 'age': 23, 'spec': 'math'},
'2': {'name': 'Jane', 'age': 20, 'spec': 'biology'},
'3': {'name': 'Peter', 'age': 21, 'spec': 'history'},
'4': {'name': 'Kate', 'age': 22, 'spec': 'science'},
}
已经准备好了,因此我们可以向前迈出一步,并开始创建带有路线的头等舱。
4.创建StudentsList班级和路线
现在我们可以开始做有趣的事情了。首先,让我们创建一个类StudentsList和其中的两个方法:get和post。
class StudentsList(Resource):
def get(self);
def post(self):
准备就绪后,我们应该添加一条路径,该路径将用作URL来调用此类中的数据。
api.add_resource(StudentsList, '/students/')
太好了,现在我们几乎准备好显示来自端点的第一数据,剩下的最后一件事是用一些逻辑填充方法并运行第一个端点。
5.为StudentsList()创建get()和post()方法
这是一个简单的步骤。在我们的API的第一个get方法中,我们想返回所有学生的列表。为此,我们将返回字典:
def get(self):
return STUDENTS
太好了,现在是时候创建post()方法了,可以将新学生添加到我们的列表中了。为此,我们需要在StudentsList类上方创建一个解析器变量,以便能够将参数添加到我们的post()调用中,然后我们可以构建一个post方法,在其中我们生成新的id并根据传递的参数保存新的Student 。
parser = reqparse.RequestParser()
def post(self):
parser.add_argument("name")
parser.add_argument("age")
parser.add_argument("spec")
args = parser.parse_args()
student_id = int(max(STUDENTS.keys())) + 1
student_id = '%i' % student_id
STUDENTS[student_id] = {
"name": args["name"],
"age": args["age"],
"spec": args["spec"],
}
return STUDENTS[student_id], 201
现在,我们准备检查对我们的API的首次调用。首先,让我们运行代码。我将在代码编辑器中进行操作。代码运行时,您应该在控制台中看到以下图像:
然后,请转到邮递员并设置GET方法,粘贴本地主机(如我们的服务器所在的位置),并在最后传递路由。就我而言,链接如下所示:
结果应显示学生的完整列表:
我们还要检查post方法是否也能正常工作。为此,您必须将方法更改为POST,并传递参数:名称,年龄和规格:
看起来一切正常现在是时候创建另一个类和其他端点了。
6.定义学生班级和路线
现在,我们将创建另一个类并为该类路由。学生班将管理获取,更新和删除。此类中的所有内容都涉及一个由student_id获得的单个学生。
class Student(Resource):
def get(self, student_id):
def put(self, student_id):
def delete(self, student_id):
接下来,我们将在当前路径下添加一条新路径:
api.add_resource(Student, '/students/' )
7.创建get(),update()和delete()方法
在这一步中,我们将为get(),update()和delete()方法创建逻辑。首先,我们想通过student_id返回一个学生。我们开始做吧:
def get(self, student_id):
if student_id not in STUDENTS:
return "Not found", 404
else:
return STUDENTS[student_id]
很好,接下来我们将创建update()方法逻辑。它将与上一类的post()方法非常相似,但是我们不会创建新的ID。首先,我们将检查具有给定id的学生是否存在。如果是,我们将更新这些值。如果否,我们将返回信息。
def put(self, student_id):
parser.add_argument("name")
parser.add_argument("age")
parser.add_argument("spec")
args = parser.parse_args()
if student_id not in STUDENTS:
return "Record not found", 404
else:
student = STUDENTS[student_id]
student["name"] = args["name"] if args["name"] is not None else student["name"]
student["age"] = args["age"] if args["age"] is not None else student["age"]
student["spec"] = args["spec"] if args["spec"] is not None else student["spec"]
return student, 200
最后,我们将创建一个delete()方法。在这种情况下,我们还必须检查具有给定ID的学生是否存在才能删除该项目。
def delete(self, student_id):
if student_id not in STUDENTS:
return "Not found", 404
else:
del STUDENTS[student_id]
return '', 204
似乎一切准备就绪让我们检查一下
8.测试端点
让我们运行代码并打开邮递员以测试端点。首先让一个学生开始。为此,我们必须在最后传递带有用户ID的链接:
有用让我们尝试更新学生,设置PUT方法,通过带有用户ID的链接,并添加一些参数来更改他们:
这个也很好最后要检查的是删除方法。因此,让我们创建一个带有学生ID的链接,然后将方法更改为DELETE:
一切正常
结论
在本文中,我们使用Python创建了一个简单的rest API。我们使用了Flask框架和Flask_RESTful库来使它变得简单快捷。我们的API允许我们获取所有商品的列表,按ID获取一个商品,将新商品添加到列表,按ID更新商品以及删除具有给定ID的商品。为了测试端点,我使用了Postman。为了编写和运行代码,我使用了Visual Studio Code。
希望本教程对您有所帮助,并将其作为您第一次Python API培训的基础如果您想掌握Python知识,请加入Duomly并完成我们新的Python价格
有一个不错的编码
来自Duomly的Anna