CRUD API服务

一个基于FastAPI的CRUD REST API服务,支持产品、客户和订单的管理,适用于本地开发和中小型应用。

  • by davidslusser
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 davidslusser/mcp-example

使用说明

mcp示例

基于MCP服务器的FastAPI API

概述

一个带有完整CRUD(创建、读取、更新、删除)REST API的产品、客户和订单管理的FastAPI应用程序。使用SQLite3进行本地开发。

特点

  • 产品API管理产品的完整CRUD操作(创建、读取、更新、删除)
  • 客户API完整的CRUD操作用于管理客户
  • 订单API对包含订单项的订单进行全面的增删改查(CRUD)操作管理
  • SQLite 数据库用于开发的本地 SQLite3 数据库
  • 自动文档生成交互式API文档请访问 /docs 并且 /redoc

安装

  1. 安装依赖项:
pip install -r requirements.txt

运行应用程序

启动开发服务器:

uvicorn app.main:app --reload

API将可在以下地址获取: http://localhost:8000

API 文档

服务器运行后,请访问:

  • Swagger UIhttp://localhost:8000/docs 翻译成中文是:“本地主机上的8000端口文档页面”。不过,通常我们不会直接翻译网址,而是直接使用原网址或在中文语境下解释其含义。所以,也可以简单地说是“访问本地8000端口的文档”
  • **ReDoc(中文可译为“重构文档”或根据具体语境可能译为“重新记录”、“修订文档”等,但“ReDoc”本身作为一个专有名词或品牌名时,通常直接保留原样)**http://localhost:8000/redoc 翻译为中文是:“http://本地主机:8000/redoc” 或者更自然地表达为:“本地主机上的 http://8000/redoc 页面”。不过,通常我们不会直接翻译网址,而是解释其用途或说明访问该网址的意义。例如,可以解释为:“这是访问本地运行的某个服务或API文档的页面,通过浏览器输入 http://localhost:8000/redoc 即可查看。” 但在这里,按照要求直接翻译网址部分,上述翻译是合适的

API 端点

产品

  • POST /products/ - 创建一个新产品
  • GET /products/ - 获取所有产品(带分页)
  • GET /products/{product_id} - 获取特定产品
  • PUT /products/{product_id} - 更新产品
  • DELETE /products/{product_id} - 删除一个产品

顾客

  • POST /customers/ - 创建一个新客户
  • GET /customers/ - 获取所有客户(带分页)
  • GET /customers/{customer_id} - 获取特定客户
  • PUT /customers/{customer_id} - 更新客户信息
  • DELETE /customers/{customer_id} - 删除一个客户

订单

  • POST /orders/ - 创建一个新订单
  • GET /orders/ - 获取所有订单(带分页)
  • GET /orders/{order_id} - 获取特定订单
  • GET /customers/{customer_id}/orders - 获取某位客户的全部订单
  • PUT /orders/{order_id} - 更新订单(状态)
  • DELETE /orders/{order_id} - 删除一个订单

示例用法

创建一个产品

curl -X POST "http://localhost:8000/products/" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Laptop",
    "description": "High-performance laptop",
    "price": 999.99,
    "stock": 50
  }'

创建一个客户

curl -X POST "http://localhost:8000/customers/" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Doe",
    "email": "john@example.com",
    "phone": "555-1234",
    "address": "123 Main St"
  }'

创建一个订单

curl -X POST "http://localhost:8000/orders/" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": 1,
    "status": "pending",
    "items": [
      {
        "product_id": 1,
        "quantity": 2
      }
    ]
  }'

数据库

该应用程序使用SQLite3数据库文件 app.db 存储在项目根目录中。首次运行应用程序时,数据库会自动创建。

数据库模式

产品表

  • id(主键)
  • 名字
  • 描述
  • 价格
  • 股票
  • 创建时间
  • 更新时间(或最后更新时间)

客户表

  • id(主键)
  • 名字
  • 电子邮件(唯一)
  • 电话
  • 地址
  • 创建时间(或生成时间)
  • 更新时间(或最后更新时间)

订单表

  • id(主键)
  • 客户ID(外键)
  • 订单日期
  • 状态
  • 总金额
  • 创建时间(或生成时间)
  • 更新时间

订单项目表

  • id(主键)
  • 订单ID(外键)
  • product_id(外键)
  • 数量
  • 价格

许可证

GPL-3.0(通用公共许可证第3版)