如何在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时,它会连接到数据库。

在开发过程中,我们将经历以下几点:

  1. 安装flask和flask_restful
  2. 创建并初始化文件
  3. 模拟数据
  4. 创建StudentsList班级和路线
  5. 为StudentsList()创建get()和post()方法
  6. 定义学生班级和路线
  7. 创建get(),update()和delete()方法
  8. 测试端点

为了更轻松,更方便,我为那些喜欢从电影中学习的人准备了本教程的视频版本。

开始吧

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-在线价格编程

有一个不错的编码
来自Duomly的Anna

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/duomly/how-to-create-a-simple-rest-api-with-python-and-flask-in-5-minutes-3edg ,版权归作者所有,未经许可,不得转载
你可能还喜欢