首页 > 编程语言 >使用 Python 构建简单 REST API

使用 Python 构建简单 REST API

时间:2024-07-26 23:07:43浏览次数:14  
标签:Python app REST 待办 API todo id todos

使用 Python 构建简单 REST API

1. 概述

本技术文档旨在指导开发者使用 Python 框架 Flask 构建一个基本的 REST API。通过学习本指南,您将掌握创建、读取、更新和删除 (CRUD) 操作的基本知识,并能够使用 Python 构建自己的 API。

2. 安装依赖

首先,您需要确保已安装 Python 和 Flask 框架。您可以使用 pip 工具安装 Flask:

pip install Flask

3. 创建基本 API 结构

创建名为 app.py 的文件,并在其中定义 Flask 应用程序:

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/')
def index():
    return '欢迎使用我的 REST API!'

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

这段代码创建了一个 Flask 应用程序,并定义了一个简单的路由 /,返回一个欢迎信息。

4. 定义 API 资源

我们将创建一个名为 todos 的资源,用于管理待办事项列表。我们将使用一个列表 todos 来存储待办事项信息:

todos = [
    {'id': 1, 'task': '学习 Python', 'completed': False},
    {'id': 2, 'task': '构建 REST API', 'completed': False}
]

5. 实现 CRUD 操作

5.1 获取所有待办事项 (GET /todos)

@app.route('/todos', methods=['GET'])
def get_todos():
    return jsonify(todos)

此路由返回存储在 todos 列表中的所有待办事项,以 JSON 格式呈现。

5.2 获取特定待办事项 (GET /todos/)

@app.route('/todos/<id>', methods=['GET'])
def get_todo(id):
    todo = next((t for t in todos if t['id'] == int(id)), None)
    if todo:
        return jsonify(todo)
    else:
        return jsonify({'error': '待办事项未找到'}), 404

此路由获取特定 id 的待办事项。如果找到,则返回该待办事项的 JSON 格式;否则返回 404 错误。

5.3 创建新待办事项 (POST /todos)

@app.route('/todos', methods=['POST'])
def create_todo():
    data = request.get_json()
    new_todo = {'id': len(todos) + 1, 'task': data['task'], 'completed': False}
    todos.append(new_todo)
    return jsonify(new_todo), 201

此路由接收 JSON 格式的待办事项信息,创建一个新的待办事项并将其添加到 todos 列表中。

5.4 更新待办事项 (PUT /todos/)

@app.route('/todos/<id>', methods=['PUT'])
def update_todo(id):
    todo = next((t for t in todos if t['id'] == int(id)), None)
    if todo:
        data = request.get_json()
        todo['task'] = data.get('task', todo['task'])
        todo['completed'] = data.get('completed', todo['completed'])
        return jsonify(todo)
    else:
        return jsonify({'error': '待办事项未找到'}), 404

此路由接收 JSON 格式的更新信息,更新特定 id 的待办事项。

5.5 删除待办事项 (DELETE /todos/)

@app.route('/todos/<id>', methods=['DELETE'])
def delete_todo(id):
    todo = next((t for t in todos if t['id'] == int(id)), None)
    if todo:
        todos.remove(todo)
        return jsonify({'message': '待办事项已删除'}), 204
    else:
        return jsonify({'error': '待办事项未找到'}), 404

此路由删除特定 id 的待办事项。

6. 运行 API

运行 app.py 文件即可启动 API:

python app.py

API 将在默认地址 http://127.0.0.1:5000/ 上运行。

7. 总结

本技术文档介绍了使用 Python 和 Flask 框架构建简单 REST API 的基础知识。您可以根据自己的需求扩展此 API,例如使用数据库存储数据、添加身份验证机制等。

8. 参考资料

标签:Python,app,REST,待办,API,todo,id,todos
From: https://www.cnblogs.com/xiaoni/p/18326415

相关文章

  • Python——Pandas(第二讲)
    文章目录变量类型的转换Pandas支持的数据类型在不同数据类型间转换建立索引新建数据框时建立索引读入数据时建立索引指定某列为索引列将索引还原变量列引用和修改索引引用索引修改索引修改索引名修改索引值更新索引Series的索引和切片DataFrame的索引和切片选择列按......
  • 基于Python+Django的红色文化研学网站设计与实现
    ......
  • 【python】对网站进行请求-初识
    python实现对网站进行请求代码如下importrequestsdefget_data(url,headers=None,params=None,timeout=10):try:res=requests.get(url,headers=headers,params=params,timeout=timeout)res.raise_for_status()returnres.text......
  • 【python】Django初识-从未有如此美妙的开局
    Django初识python、Django安装与验证python安装Python官网https://www.python.org/Django安装pipinstallDjango验证python是否安装成功python--version验证Django是否安装成功python3-mdjango--version创建第一个Django项目项目创建与服务器启动打开cmd,输......
  • Python虚拟环境创建、激活、使用,项目依赖导出、安装requestments.txt
    Python虚拟环境通过命令行终端创建python虚拟环境:新建一个文件夹,可以专门用来存放虚拟环境,这里在D盘创建Python_Virtual_Environment_test文件夹然后在这里输入cmd按回车键进入命令行终端此时打开的位置就是当前的路径,当然也可以 cd一步步进入到目标路径创建环境......
  • Postman自定义插件全攻略:扩展你的API开发工具箱
    Postman自定义插件全攻略:扩展你的API开发工具箱Postman作为API开发的瑞士军刀,其强大的功能集已经为开发者所熟知。但你知道吗?Postman还允许开发者使用自定义插件来进一步扩展其功能。这些插件可以帮助自动化重复性任务、增强测试能力,甚至集成其他服务。本文将详细介绍如何......
  • 使用 Python 脚本自动生成报告
    使用Python脚本自动生成报告1.简介本文档介绍如何使用Python脚本自动生成报告。此脚本旨在简化报告生成过程,提高效率并减少人为错误。2.需求Python3.6或更高版本Pandas库Matplotlib库3.安装使用pip安装必要的库:pipinstallpandasmatplotlib4.脚本im......
  • 【和为 K 的子数组】python刷题记录
    这就到前缀和了。classSolution:defsubarraySum(self,nums:List[int],k:int)->int:#连续不能sortnum=len(nums)i=0j=i+1sm=0ret=0#j可以=是因为后面切片不包括jwhilej<=num:......
  • 如何学习Presto:糙快猛的大数据之路(建立整体框架)
    这个系列文章用"粗快猛+大模型问答+讲故事"的创新学习方法,让你轻松理解复杂知识!涵盖Hadoop、Spark、MySQL、Flink等大数据所有热门技术栈,每篇万字长文。时间紧?只看开头20%就能有收获!精彩内容太多?收藏慢慢看!点击链接开启你的大数据学习之旅https://blog.csdn.net/u012955829......
  • 嵌入式Python、ROS、SLAM、WebSocket和Node.js:智能巡逻监控安防机器人设计流程(代码示
    项目概述随着智能技术的发展,智能巡逻机器人在安防、监控和巡逻等领域的应用越来越广泛。本文将介绍一个结合嵌入式系统、机器人技术和后端开发的智能巡逻机器人。该机器人能够自主导航,实时检测异常情况(如火灾或入侵者),并将数据发送到后端服务器,以实现高效的监控和应急响应。主......