flask中实现restful-api

flask中实现restful-api

举例,我们可以创建一个用于管理任务(Task)的API。在这个例子中,我们将有以下API:

  • GET /tasks: 获取所有任务
  • POST /tasks: 创建一个新的任务
  • GET /tasks/<id>: 获取一个任务的详情
  • PUT /tasks/<id>: 更新一个任务
  • DELETE /tasks/<id>: 删除一个任务

在这个例子中,我们将使用一个简单的内存数据结构来存储任务,而不是使用数据库。这是代码:

python 复制代码
from flask import Flask, request
from flask_restful import Resource, Api, abort

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

# 用于存储任务的字典,以ID为键
TASKS = {}

def abort_if_task_doesnt_exist(task_id):
    if task_id not in TASKS:
        abort(404, message="Task {} doesn't exist".format(task_id))

class TaskList(Resource):
    def get(self):
        return TASKS

    def post(self):
        task_id = max(TASKS.keys()) + 1 if TASKS else 1
        task = {'task': request.json.get('task', "")}
        TASKS[task_id] = task
        return task, 201

class Task(Resource):
    def get(self, task_id):
        abort_if_task_doesnt_exist(task_id)
        return TASKS[task_id]

    def put(self, task_id):
        abort_if_task_doesnt_exist(task_id)
        task = {'task': request.json.get('task', TASKS[task_id]['task'])}
        TASKS[task_id] = task
        return task

    def delete(self, task_id):
        abort_if_task_doesnt_exist(task_id)
        del TASKS[task_id]
        return '', 204

api.add_resource(TaskList, '/tasks')
api.add_resource(Task, '/tasks/<int:task_id>')

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

在这个例子中,定义了两个资源:TaskListTaskTaskList资源有两个方法:GET和POST,分别用于获取所有任务和创建新任务。Task资源有三个方法:GET,PUT和DELETE,分别用于获取,更新和删除一个特定的任务。对于每一个方法,我们都需要处理不同的请求和响应。

在REST架构中,资源(Resource)是一种基本概念。在Web中,一个资源可以是一件事物或实体,比如用户、订单、产品等,可以通过URI(统一资源标识符)来唯一标识。每个资源可以有一个或多个表述(Representation),比如JSON或XML等格式的数据。通过HTTP方法(如GET, POST, PUT, DELETE等)可以对资源进行操作。

在Flask-RESTful中,Resource类是定义资源的基础类,可以通过继承这个类来创建我们自己的资源。在Resource类中,可以定义各种HTTP方法来响应不同的请求。例如:

python 复制代码
from flask_restful import Resource

class MyResource(Resource):
    def get(self):
        pass

    def post(self):
        pass

在这个例子中,创建了一个名为MyResource的资源,这个资源有两个方法:GET和POST。当我们在Flask-RESTful的API对象中添加这个资源时,API对象将会根据请求的HTTP方法来调用相应的方法。例如,如果收到一个GET请求,那么就会调用get方法。

注意,Resource类中的方法名应该和HTTP方法名一致。你可以定义以下这些方法:get, post, put, delete, head, options, patch

相关推荐
秀儿还能再秀1 小时前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
阿_旭2 小时前
如何使用OpenCV和Python进行相机校准
python·opencv·相机校准·畸变校准
幸运的星竹2 小时前
使用pytest+openpyxl做接口自动化遇到的问题
python·自动化·pytest
kali-Myon3 小时前
ctfshow-web入门-SSTI(web361-web368)上
前端·python·学习·安全·web安全·web
B站计算机毕业设计超人3 小时前
计算机毕业设计Python+大模型农产品价格预测 ARIMA自回归模型 农产品可视化 农产品爬虫 机器学习 深度学习 大数据毕业设计 Django Flask
大数据·爬虫·python·深度学习·机器学习·课程设计·数据可视化
布鲁格若门4 小时前
AMD CPU下pytorch 多GPU运行卡死和死锁解决
人工智能·pytorch·python·nvidia
AI原吾4 小时前
探索 Python HTTP 的瑞士军刀:Requests 库
开发语言·python·http·requests
single_ffish4 小时前
XPath:网络爬虫中的数据提取利器
爬虫·python