告别繁琐,拥抱简洁!Python RESTful API 设计实战,让 API 调用如丝般顺滑!

简介: 在 Web 开发的旅程中,设计一个高效、简洁且易于使用的 RESTful API 是至关重要的。今天,我想和大家分享一次我在 Python 中进行 RESTful API 设计的实战经历,希望能给大家带来一些启发。

在 Web 开发的旅程中,设计一个高效、简洁且易于使用的 RESTful API 是至关重要的。今天,我想和大家分享一次我在 Python 中进行 RESTful API 设计的实战经历,希望能给大家带来一些启发。

最近,我参与了一个项目,需要为一个在线商店构建 API,以管理商品、订单和用户信息。首先,我选择了 Flask 框架来搭建基础架构,因为它的轻量和灵活性非常适合我们的需求。

让我们以商品管理为例,看看如何设计简洁的 API 端点。

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///store.db'
db = SQLAlchemy(app)

class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    price = db.Column(db.Float, nullable=False)

@app.route('/products', methods=['GET'])
def get_products():
    """
    获取所有商品
    """
    products = Product.query.all()
    return jsonify([{
   'id': p.id, 'name': p.name, 'price': p.price} for p in products])

@app.route('/products/<int:product_id>', methods=['GET'])
def get_product(product_id):
    """
    根据 ID 获取特定商品
    """
    product = Product.query.get(product_id)
    if product:
        return jsonify({
   'id': product.id, 'name': product.name, 'price': product.price})
    else:
        return jsonify({
   'message': 'Product not found'}), 404

@app.route('/products', methods=['POST'])
def create_product():
    """
    创建新商品
    """
    data = request.get_json()
    new_product = Product(name=data['name'], price=data['price'])
    db.session.add(new_product)
    db.session.commit()
    return jsonify({
   'message': 'Product created successfully', 'id': new_product.id}), 201

@app.route('/products/<int:product_id>', methods=['PUT'])
def update_product(product_id):
    """
    根据 ID 更新商品信息
    """
    product = Product.query.get(product_id)
    if product:
        data = request.get_json()
        product.name = data.get('name', product.name)
        product.price = data.get('price', product.price)
        db.session.commit()
        return jsonify({
   'message': 'Product updated successfully'})
    else:
        return jsonify({
   'message': 'Product not found'}), 404

@app.route('/products/<int:product_id>', methods=['DELETE'])
def delete_product(product_id):
    """
    根据 ID 删除商品
    """
    product = Product.query.get(product_id)
    if product:
        db.session.delete(product)
        db.session.commit()
        return jsonify({
   'message': 'Product deleted successfully'})
    else:
        return jsonify({
   'message': 'Product not found'}), 404

if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug=True)

在这个示例中,我们通过不同的 HTTP 方法和 URL 路径来实现对商品资源的各种操作。GET /products 获取所有商品列表,GET /products/<product_id> 获取特定商品,POST /products 创建新商品,PUT /products/<product_id> 更新商品信息,DELETE /products/<product_id> 删除商品。

为了确保数据的一致性和完整性,我们使用了数据库来存储商品信息,并在操作数据时进行了相应的事务处理。

在实际开发中,还需要考虑输入数据的验证、错误处理、权限控制等方面。例如,对于创建和更新商品的请求,我们需要验证输入的价格是否为正数,商品名称是否符合一定的长度和格式要求。

通过精心设计的 RESTful API,我们可以让前端开发人员和其他服务能够轻松地与我们的后端进行交互,实现高效、稳定的 Web 应用。

相关文章
|
10月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
1105 7
|
10月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
10月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
10月前
|
缓存 自然语言处理 API
阿里巴巴国际站关键字搜索 API 实战:3 步搞定多语言适配 + 限流破局,询盘量提升 40%
跨境电商API开发常陷合规、多语言、限流等坑。本文详解从国际合规(GDPR/CCPA)到参数优化、数据结构化及区域化搜索的全链路方案,附Python代码模板与缓存重试架构,助力提升调用成功率至99%+,精准询盘增长42%。
|
10月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
10月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
867 0
|
11月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1720 102
|
11月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
530 104
|
11月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
422 103
|
11月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
448 82

推荐镜像

更多