使用 Python 构建一个简单的 RESTful API

今天 5阅读

在现代软件开发中,构建基于 HTTP 的 RESTful API 是一种非常常见的任务。无论是在前后端分离的 Web 应用、移动应用后端,还是微服务架构中,RESTful API 都扮演着重要的角色。

本文将带你使用 Python 中的 Flask 框架来创建一个简单的 RESTful API。我们将从环境搭建开始,逐步实现基本的 CRUD(创建、读取、更新、删除)功能,并通过示例代码展示其工作原理。


1. 环境准备

在开始之前,请确保你的系统上已经安装了以下工具:

Python 3.xpip(Python 包管理器)

接下来,我们需要安装 Flask 和 Flask-RESTful 扩展:

pip install flask flask-restful

2. 创建 Flask 应用结构

我们将在一个文件中完成整个示例项目。为了清晰起见,我们先创建一个名为 app.py 的文件。

文件:app.py

from flask import Flask, requestfrom flask_restful import Resource, Apiapp = Flask(__name__)api = Api(app)# 示例数据存储books = [    {'id': 1, 'title': 'Flask Web Development', 'author': 'Miguel Grinberg'},    {'id': 2, 'title': 'Python Crash Course', 'author': 'Eric Matthes'}]# 用于生成唯一 IDnext_id = 3# 资源类:BookListclass BookList(Resource):    def get(self):        return {'books': books}, 200    def post(self):        global next_id        data = request.get_json()        new_book = {            'id': next_id,            'title': data['title'],            'author': data['author']        }        books.append(new_book)        next_id += 1        return new_book, 201# 资源类:Bookclass Book(Resource):    def get(self, book_id):        book = next((book for book in books if book['id'] == book_id), None)        if book:            return book, 200        return {'message': 'Book not found'}, 404    def put(self, book_id):        data = request.get_json()        book = next((book for book in books if book['id'] == book_id), None)        if book:            book.update({                'title': data.get('title', book['title']),                'author': data.get('author', book['author'])            })            return book, 200        return {'message': 'Book not found'}, 404    def delete(self, book_id):        global books        book = next((book for book in books if book['id'] == book_id), None)        if book:            books = [b for b in books if b['id'] != book_id]            return {'message': 'Book deleted'}, 200        return {'message': 'Book not found'}, 404# 添加资源到 APIapi.add_resource(BookList, '/books')api.add_resource(Book, '/books/<int:book_id>')if __name__ == '__main__':    app.run(debug=True)

3. 功能说明

我们的 API 提供以下几个端点:

方法URL描述
GET/books获取所有书籍列表
POST/books创建一本新书
GET/books/{id}获取指定 ID 的书籍
PUT/books/{id}更新指定 ID 的书籍信息
DELETE/books/{id}删除指定 ID 的书籍

数据结构示例

每本书的数据格式如下:

{    "id": 1,    "title": "Flask Web Development",    "author": "Miguel Grinberg"}

4. 运行和测试 API

运行程序:

python app.py

默认情况下,Flask 会在本地主机的 5000 端口启动服务器:

 * Running on http://127.0.0.1:5000/

你可以使用 Postman 或 curl 命令来测试各个接口。

示例:获取所有书籍

curl -X GET http://localhost:5000/books

响应:

{  "books": [    {      "id": 1,      "title": "Flask Web Development",      "author": "Miguel Grinberg"    },    {      "id": 2,      "title": "Python Crash Course",      "author": "Eric Matthes"    }  ]}

示例:创建一本书

curl -X POST http://localhost:5000/books \     -H "Content-Type: application/json" \     -d '{"title":"Learning Python","author":"Mark Lutz"}'

响应:

{  "id": 3,  "title": "Learning Python",  "author": "Mark Lutz"}

示例:获取特定书籍

curl -X GET http://localhost:5000/books/3

响应:

{  "id": 3,  "title": "Learning Python",  "author": "Mark Lutz"}

示例:更新书籍

curl -X PUT http://localhost:5000/books/3 \     -H "Content-Type: application/json" \     -d '{"title":"Learning Python 5th Edition"}'

响应:

{  "id": 3,  "title": "Learning Python 5th Edition",  "author": "Mark Lutz"}

示例:删除书籍

curl -X DELETE http://localhost:5000/books/3

响应:

{  "message": "Book deleted"}

5. 总结与扩展

本篇文章介绍了如何使用 Flask 和 Flask-RESTful 快速构建一个具备基础 CRUD 功能的 RESTful API。虽然这个示例非常简单,但它展示了构建 Web API 的核心概念和流程。

如果你希望进一步扩展这个项目,可以考虑以下方向:

使用数据库:将数据存储从内存迁移到 SQLite、PostgreSQL 或 MongoDB。添加身份验证:为 API 添加 Token 认证或 JWT 支持。文档化接口:使用 Swagger 或 Flask-RESTPlus 自动生成 API 文档。部署上线:将应用部署到云平台如 Heroku、AWS、GCP 等。单元测试:编写测试用例保证 API 的稳定性。

参考资料

Flask 官方文档Flask-RESTful GitHubHTTP 状态码参考

以上就是使用 Python 构建 RESTful API 的完整教程与示例代码。希望这篇文章对你理解 Web API 开发有所帮助!

免责声明:本文来自网站作者,不代表CIUIC的观点和立场,本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。客服邮箱:ciuic@ciuic.com

目录[+]

您是本站第21553名访客 今日有14篇新文章

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!