发布于 2026-01-06 4 阅读
0

面向初学者的简易 Flask API 服务器 - 附示例代码

面向初学者的简易 Flask API 服务器 - 附示例代码

各位程序员朋友们好!

本文介绍了一个简单的 API 入门示例,可以帮助初学者更好地理解API 的概念。代码库可以从 GitHub 下载,并用于在线学习或生产环境。该 API 基于Flask框架,Flask 是一个领先的软件库,受到众多open-source爱好者的积极支持和版本控制。

Thanks for reading!盒子里装的是什么:

  • 👉基于极简表格的简单 APIDatas
  • 👉SQLite Persistence由优雅的 ORM(SqlAlchemy)管理
  • 👉Powerful API核心由 Flask-RestX 提供
  • 👉Strong Input validation
  • 🎁通过电子邮件和Discord(1000+ 社区)提供免费支持。

API定义

路线 动词 信息 地位
/datas 得到 所有物品 ✔️
邮政 创建新项目 ✔️
/datas:id 得到 退回一件商品 ✔️
更新项 ✔️
删除 删除项目 ✔️

技术栈

  • Flask用于路由和整体管理
  • Flask-RestXAPI
  • Flask-SqlAlchemy- 用最少的代码管理数据库
  • Docker该设置为像我这样的懒惰开发者提供了快速入门的方法。

✨ API 编码与实现规则

  • 简洁界面
  • 一致、直观的行动
  • 为每个动作使用正确的动词
    • GET行动read-only
    • DELETE移除物品
    • POST更新信息
  • 强输入验证

代码库结构

所有相关文件均列于下方。其他文件docker-compose.yml,例如 README 和 LICENSE,已省略。

api-server-flask/
├── api
│   ├── __init__.py
│   ├── config.py
│   ├── models.py
│   └── routes.py
├── README.md
├── requirements.txt
└── run.py
Enter fullscreen mode Exit fullscreen mode

简单介绍一下每一项:

  • run.py入口点
  • api folder
    • __init__.py构建应用程序
    • models.py- 定义一个单一的(简单的)模型
    • routes.py——做那些辛苦的工作
    • config.py- 实现最小设置

API 模型

API 管理的信息保存在一个包含三个字段的简单表格中:id,,datadate_created以下是源代码

# Contents of "api/models.py" (truncated)
...
class Datas(db.Model):

    id           = db.Column(db.Integer()   , primary_key=True)
    data         = db.Column(db.String(256) , nullable=False)
    date_created = db.Column(db.DateTime()  , default=datetime.utcnow)
...
Enter fullscreen mode Exit fullscreen mode

源代码提供了一些辅助功能,可以简化我们作为开发人员的工作:

  • update_data- 更新data字段
  • save- 保存并提交当前对象的更新
  • toJSON返回JSON表示形式

路由

每种方法都力求简单,但同时又能提供强大的验证和优雅的 SQL 访问。

例如,管理更新操作的路由item

# Contents of "api/routes.py" (truncated)
....
@rest_api.route('/api/datas/<int:id>')
class ItemManager(Resource):
...
    """
       Update Item
    """
    @rest_api.expect(update_model, validate=True)
    def put(self, id):

        item = Datas.get_by_id(id)

        # Read ALL input from body  
        req_data = request.get_json()

        # Get the information    
        item_data = req_data.get("data")

        if not item:
            return {"success": False,
                    "msg": "Item not found."}, 400

        item.update_data(item_data)
        item.save()

        return {"success" : True,
                "msg"     : "Item [" +str(id)+ "] successfully updated",
                "data"    :  item.toJSON()}, 200 
... 
Enter fullscreen mode Exit fullscreen mode

让我们遍历相关行:

@rest_api.route('/api/datas/<int:id>')定义路线

/api/datas/1例如,当用户访问时,Flask 会将请求路由到此部分。

@rest_api.expect(update_model, validate=True)

此装饰器会触发一个预先定义的验证,如下所示:

update_model = rest_api.model('UpdateModel', {"data": fields.String(required=True, min_length=1, max_length=255)})
Enter fullscreen mode Exit fullscreen mode

如果data字段大小超过 255,则请求将被拒绝。对我们开发人员来说,这几乎不需要编写任何代码。

我们的处理程序接下来将执行以下步骤:

  • 使用以下方法从数据库中选择项目ID
    • item = Datas.get_by_id(id)通过 SQLAlchemy
  • 如果未找到项目,则退出并显示详细的错误信息。
  • 如果找到该物品
    • 更新data字段
    • 将新对象保存到数据库中

✨接下来该何去何从

这个简单的API很快将扩展更多功能:

  • Datas向模型添加更多字段
  • 实现身份验证
  • 限制update操作仅限已认证用户。

有什么想法吗?请在评论区留言。


谢谢你!


✨ 如需更多资源,请访问:

文章来源:https://dev.to/sm0ke/simple-flask-api-server-for-beginners-with-sample-code-5ceg