食韵味简 —— 免费开源的中式菜谱 API 服务

🍳 食韵味简 ------ 免费开源的中式菜谱 API 服务

一个免费开源的中式菜谱 API 项目。内置 3000 道 中式菜谱、覆盖 10 大菜系,开箱即用,无需注册、无需 API Key。

*首页:今日推荐 + 数据统计卡片 + "做一桌菜"入口


一、项目简介

食韵味简 是一个免费、开源的中式菜谱 API 服务,同时也是一个完整的落地网站。它将"菜谱数据"开放成标准 REST API,任何人都可以调用它来构建自己的菜谱应用。

项目采用"展示型首页 + 开放 API + 在线调试"的一体化形态,围绕菜谱做了完整的转译:

  • 随机"一道好菜" → 菜谱的随机推荐
  • 多维分类 → 菜谱的菜系/类型/标签
  • 同样提供在线调试、分类浏览、接口文档等开发者友好功能

二、功能亮点

功能 说明
🎲 随机菜谱 支持按菜系、类型、标签、时长多维随机
🔍 全文检索 标题 / 描述 / 食材模糊搜索,分页返回
🍽️ 做一桌菜 一键智能搭配凉菜、热菜、汤羹、主食、甜点,凑齐一桌菜
🖥️ 在线调试 内置 Python / JS / Node / Go / Java / PHP / curl 多语言示例,实时查看 JSON 结果与耗时
🎨 六套主题 暖阳、樱粉、清净、墨韵、暮山、夜阑,一键切换,记忆偏好
📚 分类浏览 按菜系 / 类型 / 标签 / 时长筛选,渐变色卡片 + 专属 emoji
📖 详情弹窗 点开即看食材清单、制作流程,无需跳页

菜谱详情:食材清单 + 制作流程

做一桌菜:选择道数、菜系偏好、口味偏好

智能搭配 12 道菜,按类型分组展示

三、技术栈

  • 后端:Python 3.13 + FastAPI + SQLite
  • 前端:Vue 3 + TypeScript + Vite + Tailwind CSS
  • 数据 :内置 3000 道菜谱(backend/data/recipes.json),覆盖 10 大菜系(川、粤、鲁、苏、浙、闽、湘、徽、京、家常)× 5 大类型(凉菜、热菜、汤羹、主食、甜点)
  • 部署:前后端一体化,FastAPI 直接托管前端静态文件,单服务即可上线

接口总览:全部 10 个开放端点

在线调试:7 种语言代码示例 + 实时 JSON 返回

分类浏览:多维筛选 + 精选推荐

菜系详情页(以鲁菜为例)

四、快速开始

1. 克隆代码

bash 复制代码
git clone https://atomgit.com/wangchunyu114/cook-easy.git
cd cook-easy

2. 启动后端(端口 8000)

bash 复制代码
cd backend
pip install -r requirements.txt
python start.py        # 启动服务
# python stop.py       # 停止服务

启动后端后即可体验:

地址 说明
http://127.0.0.1:8000 网站首页(一体化的前端页面)
http://127.0.0.1:8000/docs Swagger UI 交互式接口文档

3. 启动前端(端口 5173,开发模式)

bash 复制代码
cd frontend
npm install
python start.py        # 等价于 npm run dev
# python stop.py       # 停止服务

然后浏览器访问 http://127.0.0.1:5173。

前端开发服务器已配置代理,/api 前缀会自动转发到 http://127.0.0.1:8000,无需额外配置跨域。

4. 前后端一体化构建(生产部署)

bash 复制代码
cd frontend
npm run build
# 将 frontend/dist 产物复制到 backend/static_frontend
# 由 FastAPI 直接托管,单服务即可部署上线

五、API 一览

所有接口均返回 JSON,无需注册、无需 API Key,直接调用即可。

接口 说明 示例
GET /api/recipes/random 随机一道菜谱 /api/recipes/random
GET /api/recipes/random 按条件随机 /api/recipes/random?cuisine=川菜&category=热菜&tag=下饭
GET /api/recipes/{id} 按 ID 获取菜谱 /api/recipes/1
GET /api/search 全文检索 /api/search?q=红烧&page=1&per_page=20
GET /api/cuisines 菜系列表 /api/cuisines
GET /api/categories 类型列表 /api/categories
GET /api/tags 标签列表 /api/tags
GET /api/stats 数据统计 /api/stats
GET /health 健康检查 /health

返回结构示例

json 复制代码
{
  "data": {
    "id": 1,
    "title": "麻婆豆腐",
    "subtitle": "一勺红油,人间至味",
    "description": "川菜代表,豆腐嫩滑,麻辣鲜香......",
    "difficulty": "简单",
    "time_minutes": 20,
    "cuisine": { "id": 1, "name": "川菜", "description": "麻辣鲜香......" },
    "category": { "id": 2, "name": "热菜", "description": "......" },
    "ingredients": ["嫩豆腐 400g", "牛肉末 80g"],
    "steps": ["豆腐切块,入加盐的开水中焯烫......"],
    "tags": [{ "id": 1, "name": "下饭" }]
  }
}

Python 调用示例

python 复制代码
import requests

url = "https://cook-easy-319130-10-1452418235.sh.run.tcloudbase.com/api/recipes/random"
resp = requests.get(url, timeout=5)
data = resp.json()["data"]

print(f"今日推荐:{data['title']}")
print("食材:", "、".join(data['ingredients'][:3]))

六、项目结构

复制代码
cook-easy/
├── backend/
│   ├── app/
│   │   ├── main.py            # FastAPI 入口(含静态资源托管)
│   │   ├── database.py        # SQLite 初始化与数据导入
│   │   ├── schemas.py         # Pydantic 模型
│   │   ├── common.py          # 公共查询逻辑
│   │   ├── routers/           # API 路由(search/cuisine/category/tags/stats...)
│   │   └── scripts/           # 数据生成与校验脚本
│   ├── data/
│   │   └── recipes.json       # 内置 3000 道菜谱数据
│   ├── static_frontend/       # 前端构建产物(一体化部署用)
│   └── start.py / stop.py     # 服务启停
├── frontend/
│   ├── src/
│   │   ├── api/client.ts      # API 客户端
│   │   ├── components/        # Hero / 接口总览 / 在线调试 / 分类浏览 / FAQ / 详情弹窗 / 主题切换
│   │   ├── composables/       # useTheme 主题管理
│   │   ├── utils/             # 食材 emoji 映射等工具
│   │   ├── views/             # 页面视图
│   │   └── types/             # TypeScript 类型
│   └── start.py / stop.py

七、扩展菜谱数据

编辑 backend/data/recipes.json,按现有格式追加条目(id 不重复),删除已生成的 recipes.db 后重新启动即可生效。

八、结语

3000 道数据规模;从单一暗色页面,到六套可切换主题;从只会返回 JSON 的 API,到"做一桌菜"这样的完整产品体验------食韵味简 既是一个可以直接使用的菜谱 API,也是一个前端 + 后端 + 数据的完整开源示例。

如果对你有帮助,欢迎 Star ⭐、提交 Issue 或 PR,一起让这个项目更好。

相关推荐
znx9391 小时前
因子分析:量化交易的底层核心与盈利逻辑基石
人工智能·python·机器学习·期魔方
jason.zeng@15022071 小时前
(十)分层架构的多文件工程
python·架构·prompt·交互·ai编程·llama
小小张说故事1 小时前
Python 装饰器到底是个啥?从 @ 符号到手写一个,5 个例子讲透
后端·python
IvorySQL1 小时前
VACUUM FULL 之后 ROWID 就废了? IvorySQL 兼容性实测
数据库·人工智能·ai·postgresql·开源
GPUStack1 小时前
一张 A800 80GB,跑通 Qwen-Image-2.1:GPUStack 部署、生成与图像编辑实战
人工智能·开源·github·vllm·大模型部署·gpustack
haerapi1 小时前
KingbaseES 全文检索实战之前:先建立中文搜索的可解释基线
开发语言·python·全文检索
用户47949283569151 小时前
我免费开源的 Archify 约 8 万 Star,别人先做出了 $19/月的在线版
开源·资讯
专业程序开发源1 小时前
SSM笔记本在线销售系统32649-计算机课程设计、毕业设计
java·spring boot·后端·python·django·php·课程设计