Flask-RESTful API 开发实战:从安装到参数解析详解

认真发呆
认真发呆
发布时间:2026-10-13| 4人浏览过
原创

本文详细介绍如何使用 Flask-RESTful 扩展快速构建 RESTful API。内容涵盖环境安装、完整代码示例及核心概念解析,重点讲解 Resource 类的定义与 HTTP 方法映射。同时深入剖析 reqparse 模块的用法,包括基础参数获取、必填项校验及多值处理(action='append'),帮助开发者高效实现接口规范与数据验证。

Flask-RESTful 是 Flask 框架的一个扩展库,旨在简化 RESTful API 接口的创建过程。借助该扩展,开发者能够以极低的成本和高效率构建符合 REST 架构风格的 Web 服务应用。

1、安装

pip install flask_restful

2、全部代码

from flask import Flask
from flask_restful import reqparse, abort, Api, Resource

app = Flask(__name__)
api = Api(app)

TODOS = {
  'todo1': {'task': 'build'},
  'todo2': {'task': 'bui2'},
  'todo3': {'task': 'bui3'}
}

parser = reqparse.RequestParser()
parser.add_argument('task')

class Todo(Resource):
  def get(self, todo_id):
    return TODOS[todo_id]

  def delete(self, todo_id):
    del TODOS[todo_id]
    return '', 204

  def put(self, todo_id):
    args = parser.parse_args()
    task = {'task': args['task']}
    TODOS[todo_id] = task
    return task, 201


class TodoList(Resource):
  def get(self):
    return TODOS


api.add_resource(TodoList, '/todos')
api.add_resource(Todo, '/todos/<todo_id>')

if __name__ == '__main__':
  app.run(debug=True)

3、代码说明

1). 初始化

在程序启动阶段,需要实例化一个 Flask-RESTful 的 Api 对象,并将其绑定到 Flask 应用实例上,从而启用 RESTful 路由功能。

api = Api(app)

2). 定义资源类

资源类是 RESTful 接口的核心实现单元,必须继承自 Resource 基类。在子类中,可以定义 get、post、put、delete 等 HTTP 方法,以对应 RESTful 规范中的各种操作语义。

class Todo(Resource):
  def get(self, todo_id):
    return TODOS[todo_id]

  def delete(self, todo_id):
    del TODOS[todo_id]
    return '', 204

  def put(self, todo_id):
    args = parser.parse_args()
    task = {'task': args['task']}
    TODOS[todo_id] = task
    return task, 201

3). 参数解析

尽管 Flask 原生提供了访问请求数据的方法,但处理复杂的表单或 JSON 数据时较为繁琐。Flask-RESTful 提供了 reqparse 模块,其设计思路类似于 argparse,旨在简化请求参数的获取与验证流程。

首先通过 reqparse.RequestParser() 创建解析器实例。该解析器能够从 flask.Request.values(表单数据)或 flask.Request.json(JSON 数据)中提取指定字段。此处创建了一个名为 parser 的解析对象。

使用 parser.add_argument('task') 向解析器注册需要关注的参数。每个 add_argument 调用对应一个具体的请求参数或选项,用于定义该参数的名称及基本属性。

在业务逻辑中调用 parser.parse_args() 执行解析。若解析成功,即可通过返回的字典对象获取对应的参数值;若解析失败(如缺少必填参数),框架会自动返回 400 错误响应。

4). add_argument扩展

对于必须提供的参数,可以在 add_argument 中设置 required=True 属性。若请求中缺失该参数,解析器将自动报错,无需手动检查。

parser.add_argument('name', type=str, required=True,
help="Name cannot be blank!")

若需接收多个同名参数(例如数组或列表),可设置 action='append'。此时,解析器会将所有同名参数值收集到一个列表中。

parser.add_argument('name', type=str, action='append')

使用示例:

curl http://api.example.com -d "Name=bob" -d "Name=sue" -d "Name=joe"

获取的参数为:

args = parser.parse_args()
args['name']  # ['bob', 'sue', 'joe']

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。