Python进行Restful API开发实例详解

下面我会详细讲解 Python 进行 Restful API 开发实例的完整攻略,并提供两个示例说明。

准备工作

在进行 Restful API 开发之前,需要安装 Flask 和 Flask-RESTful 等库。执行以下命令进行安装:

pip install Flask Flask-RESTful

示例一:ToDo List

在这个示例中,我们将创建一个简单的 ToDo List,包含以下操作:

  • 获取所有 tasks
  • 获取单个 task
  • 创建 task
  • 更新 task
  • 删除 task

  • 创建 Flask 应用
    我们首先创建一个简单的 Flask 应用,代码如下:

from flask import Flask

app = Flask(__name__)

if __name__ == '__main__':
    app.run(debug=True)
  1. 创建 tasks 数据
    我们创建 tasks 数据来模拟正式的数据库,代码如下:
tasks = [
    {
        'id': 1,
        'title': 'Learn Python',
        'description': 'Learn Python basics',
        'done': False
    },
    {
        'id': 2,
        'title': 'Read book',
        'description': 'Read book for 1 hour',
        'done': False
    }
]
  1. 创建 API 资源
    接下来,我们定义 Flask-RESTful 的 Resource 类来管理 API 资源。我们创建一个 TaskList 类来获取所有 tasks,以及一个 Task 类来获取单个 task。
from flask_restful import Resource

class TaskList(Resource):
    def get(self):
        return {'tasks': tasks}

class Task(Resource):
    def get(self, id):
        for task in tasks:
            if task['id'] == id:
                return task
        return {'task': None}, 404

然后,我们在 Flask 应用中添加任务资源的路由:

from flask_restful import Api

api = Api(app)
api.add_resource(TaskList, '/tasks/')
api.add_resource(Task, '/tasks/<int:id>')

现在,我们可以在浏览器中访问 http://localhost:5000/tasks/ 来获取所有 tasks,访问 http://localhost:5000/tasks/1 来获取具有 ID 为 1 的单个 task。

  1. 更新和删除 task
    下一步,我们添加更新和删除 task 的方法。我们使用 PUT 请求来更新 task,使用 DELETE 请求来删除 task。
class Task(Resource):
    def get(self, id):
        for task in tasks:
            if task['id'] == id:
                return task
        return {'task': None}, 404

    def put(self, id):
        task = [task for task in tasks if task['id'] == id]
        if len(task) == 0:
            return {'task': None}, 404
        task = task[0]
        args = parser.parse_args()
        task['title'] = args['title']
        task['description'] = args['description']
        task['done'] = args['done']
        return {'task': task}

    def delete(self, id):
        task = [task for task in tasks if task['id'] == id]
        if len(task) == 0:
            return {'task': None}, 404
        tasks.remove(task[0])
        return {'task': 'deleted'}

我们还需要定义 PUT 和 DELETE 请求的参数:

from flask_restful import reqparse

parser = reqparse.RequestParser()
parser.add_argument('title', type=str)
parser.add_argument('description', type=str)
parser.add_argument('done', type=bool)
  1. 创建 task
    最后,我们添加一个 POST 请求来创建 task。
class TaskList(Resource):
    def get(self):
        return {'tasks': tasks}

    def post(self):
        args = parser.parse_args()
        task = {
            'id': len(tasks) + 1,
            'title': args['title'],
            'description': args['description'],
            'done': False
        }
        tasks.append(task)
        return {'task': task}, 201

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

现在,我们可以使用 POST 请求来创建一个 task:

$ curl -H "Content-Type: application/json" -X POST -d '{"title":"new task", "description":"new task description"}' http://localhost:5000/tasks/

示例二:简单的 RESTful API

在这个示例中,我们将创建一个简单的 RESTful API,包含以下操作:

  • 获取所有 students
  • 获取单个 student
  • 创建 student
  • 更新 student
  • 删除 student

  • 创建 Flask 应用
    我们首先创建一个简单的 Flask 应用,代码如下:

from flask import Flask, jsonify, request

app = Flask(__name__)

if __name__ == '__main__':
    app.run(debug=True)
  1. 创建 students 数据
    我们创建 students 数据来模拟正式的数据库,代码如下:
from datetime import datetime

students = [
    {
        'id': 1,
        'name': 'Anna',
        'age': 22,
        'created_at': datetime.now()
    },
    {
        'id': 2,
        'name': 'Bob',
        'age': 20,
        'created_at': datetime.now()
    }
]
  1. 创建 API 路由
    接下来,我们创建路由来定义 API 的各个功能,包括获取所有 students、获取单个 student 以及更新和删除 student。需要注意的是,在进行 POST 和 PUT 请求的处理时,我们需要从 request 中获取数据。
@app.route('/students', methods=['GET', 'POST'])
def handle_students():
    if request.method == 'GET':
        return jsonify(students)

    if request.method == 'POST':
        student = {
            'id': len(students) + 1,
            'name': request.json['name'],
            'age': request.json['age'],
            'created_at': datetime.now()
        }
        students.append(student)
        return jsonify(student), 201

@app.route('/students/<int:id>', methods=['GET', 'PUT', 'DELETE'])
def handle_student(id):
    student = [student for student in students if student['id'] == id]
    if len(student) == 0:
        return jsonify({'error': 'student not found'}), 404
    student = student[0]

    if request.method == 'GET':
        return jsonify(student)

    if request.method == 'PUT':
        student['name'] = request.json['name']
        student['age'] = request.json['age']
        student['created_at'] = datetime.now()
        return jsonify(student)

    if request.method == 'DELETE':
        students.remove(student)
        return jsonify({'result': True})
  1. 测试 API
    现在,我们可以在浏览器或终端中发送 GET、POST、PUT、DELETE 等请求来对 API 进行测试。例如,我们可以使用 curl 命令来创建一个新的 student:
$ curl -H "Content-Type: application/json" -X POST -d '{"name":"Lucy", "age":"28"}' http://localhost:5000/students

至此,我们完成了一个简单的 RESTful API 的开发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python进行Restful API开发实例详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Python flask框架post接口调用示例

    下面是“Python Flask框架POST接口调用示例”的完整攻略: 1. 确保flask和requests已安装 在开始之前,需要确保flask和requests已安装。如果没有安装可以在命令行中使用以下命令进行安装: pip install flask pip install requests 2. 创建Flask应用程序 创建一个Python脚本ap…

    Flask 2023年5月15日
    00
  • 在Python的Flask中使用WTForms表单框架的基础教程

    下面我将为您讲解在Python的Flask中使用WTForms表单框架的基础教程。 一、安装WTForms 在Python命令行中使用pip命令安装WTForms框架,方法如下: pip install WTForms 二、使用WTForms 1.创建表单类 首先,我们需要创建一个表单类来描述我们的表单。在这个表单类中,我们需要定义表单的字段类型、验证规则以…

    Flask 2023年5月16日
    00
  • Flask中基于Token的身份认证的实现

    下面是Flask中基于Token的身份认证的实现完整攻略: 一、什么是基于Token的身份认证 基于Token的身份认证,通常是指在Web应用程序中通过Token来验证用户身份的一种方式。这种方式相比传统的Session认证方式,具有以下优势: 无状态:Token身份验证不需要在服务端维护session,因此可以实现无状态的验证。 可扩展:由于每个请求都携带…

    Flask 2023年5月16日
    00
  • 由面试题加深对Django的认识理解

    以下是“由面试题加深对Django的认识理解”的完整攻略。 第一步:准备 在开始之前,我们需要做一些准备工作。首先,我们需要了解Django的基本概念和知识点,如MVC模式、ORM、模板语言等。其次,我们需要寻找一些高质量的面试题,可以从网络上找到一些经典的面试题供我们练习。 第二步:掌握基础知识 在这一步,我们需要对Django的基础知识进行深入学习和掌握…

    Flask 2023年5月16日
    00
  • Python flask-script 模块详解

    Python Flask-Script 模块详解 简介 Flask-Script 是 Flask 的扩展模块,其提供了一些方便的命令行脚本的功能。可以使用 Flask-Script 快速创建和管理 Flask 项目,其中常用的功能有: 启动服务器 创建数据库 初始化数据 创建管理员账户等 安装 使用 pip 安装 Flask-Script: $ pip in…

    Flask 2023年5月15日
    00
  • Python Web框架Flask信号机制(signals)介绍

    下面我将为您详细讲解“Python Web框架Flask信号机制(signals)介绍”的完整攻略。 什么是Flask信号机制 Flask信号机制(signals)是一个事件处理系统,可以在某些预定义的时机触发自定义的函数。通过使用信号机制,我们可以轻松地将应用程序分解为独立且可重用的组件。 Flask信号机制是建立在blinker库之上的,这是一个事件通知…

    Flask 2023年5月15日
    00
  • Python使用Flask框架同时上传多个文件的方法

    Python使用Flask框架同时上传多个文件的方法需要以下步骤: 1. 创建HTML表单 HTML表单需要添加enctype属性,值是multipart/form-data,表示表单数据同时包含文本和二进制数据(文件)。表单中使用input标签的type属性为file的元素来让用户选择需要上传的文件,如下所示: <form action="…

    Flask 2023年5月15日
    00
  • Flask Cookie 使用方法详解

    Flask 是一个 Python Web 框架,Cookie 是一个小型文本文件,由服务器发送给 Web 浏览器并保存在本地计算机上,用于跟踪用户。本文将详细介绍 Flask 中的 Cookie 处理,并提供代码示例。 Flask 的 Cookie 模块 Flask 的 Cookie 模块是 Flask 对 Python 标准库中 Cookie 模块的封装。…

    Flask 2023年3月13日
    00
合作推广
合作推广
分享本页
返回顶部