Flask Rest API -Part:0- 设置和基本 CRUD API

2025-06-10

Flask Rest API -Part:0- 设置和基本 CRUD API

第 0 部分:设置和基本 CRUD API

你好!欢迎来到 Flask Rest API - 从零到尤达系列教程。我们将学习如何构建一个电影数据库,用户可以在其中添加、编辑、更新和删除GenreMovie以及Casts。首先,我们将从使用 和 的基本 API 结构入手,Flask然后学习如何MongoDB与应用程序集成。最后,我们将学习如何按照最佳实践,使用 和 进行最小设置来构建我们的 API Flask-RESTful。然后,我们将继续使用AuthenticationAuthorization,测试和部署 Flask 应用程序。

我们将在本系列中学习什么?

为什么选择 Flask?

  • 易于上手😊
  • 非常适合构建 Rest API 和微服务。
  • 被 Netflix、Reddit、Lyft 等大公司所采用。
  • 非常适合构建机器学习应用程序的 API。
  • 这个的力量很强大

这个系列适合哪些人?

  • 具有 Python 基本知识并想要构建酷炫应用程序的初学者。
  • 有使用过 Flask SSR(服务器端渲染)的经验丰富的 Flask 开发人员。

那么,让我们开始吧。

首先,创建一个新目录并浏览到新创建的目录,我将把它命名为movie-bag

mkdir movie-bag
cd movie-bag
Enter fullscreen mode Exit fullscreen mode

首先pipenv
使用命令安装

pip install --user pipenv
Enter fullscreen mode Exit fullscreen mode

Pipenv用于创建一个virtual environment隔离区,将您在该项目中使用的 Python 包与其他系统 Python 包隔离开来。这样,您就可以为不同的项目使用相同 Python 包的不同版本。

现在,让我们安装flask使用pipenv

pipenv install flask
Enter fullscreen mode Exit fullscreen mode

这将创建一个新的虚拟环境并安装 flask。此命令将创建两个文件PipfilePipfile.lock

#~ movie-bag/Pipfile

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
flask = "*"

[requires]
python_version = "3.7"
Enter fullscreen mode Exit fullscreen mode

Pipfile 包含应用程序所需的软件包。如您所见,flask它已添加到[packages]列表中。这意味着,当有人下载​​您的代码并运行它时pipenv installflask它就会安装在他们的系统中。很棒,对吧?

如果您熟悉requirements.txt,请将其Pipfile视为类requirements.txt固醇。

Flask 非常简单,你只需一个文件就能创建一个 API。(但你不必这么做😅)

创建一个名为“app.py我们将在其中编写 Flask Hello World API”的新文件。在其中写入以下代码app.py

#~movie-bag/app.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return {'hello': 'world'}


app.run()
Enter fullscreen mode Exit fullscreen mode

让我们理解一下我们刚刚写的内容。首先,我们Flaskflask包中导入了该类。

然后我们用 定义一个根端点,称为@app.route('/')它基本上接受函数扩展其行为,以便在请求端点时调用它。并返回,最后服务器启动@app.route()decoratorhello()/hello(){'hello': 'world'}Flaskapp.run()

想了解更多关于装饰器的知识?阅读这篇精彩的文章

好了,你已经创建了自己的第一个 Flask API(拍拍你的后背)。

Flask要运行该应用程序,首先,启用您在安装时创建的虚拟环境

pipenv shell
Enter fullscreen mode Exit fullscreen mode

现在使用以下命令运行该应用程序,

python app.py
Enter fullscreen mode Exit fullscreen mode

输出如下所示:

* Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Enter fullscreen mode Exit fullscreen mode

如您所见,该应用程序正在 上运行http://127.0.0.1:5000/。在您选择的浏览器中输入 URL,然后查看JSON服务器的响应。

注意:127.0.0.1 的别名是 localhost,因此您也可以通过 http:localhost:5000 访问您的 API

现在让我们更新app.py以获得更多乐趣😉

#~/movie-bag/app.py

-from flask import Flask
+from flask import Flask, jsonify

 app = Flask(__name__)

+movies = [
+    {
+        "name": "The Shawshank Redemption",
+        "casts": ["Tim Robbins", "Morgan Freeman", "Bob Gunton", "William Sadler"],
+        "genres": ["Drama"]
+    },
+    {
+       "name": "The Godfather ",
+       "casts": ["Marlon Brando", "Al Pacino", "James Caan", "Diane Keaton"],
+       "genres": ["Crime", "Drama"]
+    }
+]
+
-@app.route('/')
+@app.route('/movies')
def hello():
-    return {'hello': 'world'}
+    return jsonify(movies)


 app.run()
Enter fullscreen mode Exit fullscreen mode

注意: 在上面的代码片段中,-red)表示先前代码中被删除的部分,+green)表示替换它的代码。所以,如果你跟着我一起写代码,只需复制green不带符号的代码即可+

这里我们导入了jsonifyfrom flask,用于将movies列表转换为正确的JSON值。
注意,我们还将 API 端点从 重命名为//movies所以
,现在我们的 API 应该可以通过 访问了。http://localhost:5000/movies

要查看更改,请重新启动Flask服务器。

为了使用我们的 API,我们将使用Postman。Postman 用于测试使用不同 HTTP 方法的 API。例如,使用POSTrequest 向 Web 服务器发送数据、使用 request 更新服务器中的数据PUT、使用 request 从服务器获取数据GET以及使用DELETErequest 删除数据。

在此处了解有关REST API HTTP 方法的更多信息。

安装Postman以轻松测试您的 API 端点。

安装后Postman,打开一个新标签并将GET请求发送到您的服务器(http://localhost:5000)。

Postman 获取请求响应
使用 Postman 获取请求响应

好的,现在我们准备添加新的 API 端点CRUD(创建、更新、检索和删除)

app.py在之前添加以下代码app.run()

#~movie-bag/app.py

-from flask import Flask, jsonify
+from flask import Flask, jsonify, request

 app = Flask(__name__)

@@ -19,5 +19,21 @@ movies = [
 def hello():
     return jsonify(movies)

+@app.route('/movies', methods=['POST'])
+def add_movie():
+    movie = request.get_json()
+    movies.append(movie)
+    return {'id': len(movies)}, 200
+
+@app.route('/movies/<int:index>', methods=['PUT'])
+def update_movie(index):
+    movie = request.get_json()
+    movies[index] = movie
+    return jsonify(movies[index]), 200
+
+@app.route('/movies/<int:index>', methods=['DELETE'])
+def delete_movie(index):
+    movies.pop(index)
+    return 'None', 200

 app.run()
Enter fullscreen mode Exit fullscreen mode

如您所见,@app.route()除了 API 端点之外,还可以接受一个参数。该参数methods用于 API 端点。

我们刚刚添加了:
1)@app.route('/movies', methods=['POST'])
用于将新电影添加到movies列表的端点。此端点接受POST请求。POST您可以使用请求向列表发送新电影。
使用 Postman 通过 POST 请求发送电影

  • POST从下拉菜单中选择
  • 单击Body选项卡,然后单击raw
  • 从下拉菜单中选择JSON(表示我们正在以 JSON 格式将数据发送到我们的服务器。)
  • 输入以下电影详情并点击SEND
  {
    "name": "The Dark Knight",
    "casts": ["Christian Bale", "Heath Ledger", "Aaron Eckhart", "Michael Caine"],
    "genres": ["Action", "Crime", "Drama"]
  }
Enter fullscreen mode Exit fullscreen mode

Postman POST 请求响应
使用 Postman 的 POST 请求响应


在响应中,您将获得最近添加的电影的 ID

{"id": 2}
Enter fullscreen mode Exit fullscreen mode
  • 现在再次发送请求并查看服务器响应的电影GET列表😊3

2)根据 的建议@app.route('/movies/<int:index>', methods=['PUT']),编辑列表中已存在的电影的端点。同样,对于请求,您也必须包含要更新的电影的正文。index<int:index>PUTJSON

Postman PUT 请求响应

使用 Postman 的 PUT 请求响应

  • 现在发送GET请求以查看您更新的电影是否确实在电影列表中更新。

3)@app.route('/movies/<int:index>', methods=['DELETE'])用于从电影列表的指定索引中删除电影的 API 端点。使用 Postman 的 DELETE 请求响应
Postman DELETE 请求响应

  • 现在发送GET请求/movies并查看电影是否已从movies列表中删除。

我们从本系列的这一部分中学到了什么?

  • Flask使用以下方式在新的虚拟环境中安装pipenv
  • 创建一个简单的 hello world flask 应用程序
  • 创建具有功能的 API 端点CRUD

本系列文章的这一部分就到这里。你可以在这里
找到这部分的代码

在本部分中,我们仅学习了如何将电影存储在 Python 列表中,但在本系列的下一部分中,我们将学习如何将Mongoengine电影存储在真实的MongoDB数据库中。

祝您编码愉快😊

鏂囩珷鏉ユ簮锛�https://dev.to/paurakhsharma/flask-rest-api-part-0-setup-basic-crud-api-4650
PREV
使用 LangChain 构建 LLM 驱动应用程序的初学者指南!
NEXT
免费开源登陆页面模板🔥