当前位置: 首页 > news >正文

Norish开发入门:从API接口到插件开发的完整技术文档

Norish开发入门:从API接口到插件开发的完整技术文档

【免费下载链接】norishNorish - A realtime, self-hosted recipe app for families & friends项目地址: https://gitcode.com/gh_mirrors/no/norish

Norish是一款实时的、自托管的家庭和朋友食谱应用,本指南将帮助开发者从API接口使用到插件开发,快速掌握Norish的技术架构和扩展方式。通过本文,你将了解如何搭建开发环境、利用API接口进行数据交互,以及开发自定义插件来扩展Norish的功能。

开发环境搭建

环境要求

  • Node.js22.22.0(见.nvmrc)
  • pnpm10.x或更高版本
  • Docker(用于PostgreSQL、Redis和无头Chrome)
  • Git

本地开发设置

# 克隆仓库 git clone https://gitcode.com/gh_mirrors/no/norish cd norish # 安装依赖 pnpm install # 创建环境文件 cp .env.example .env.local # 启动所需服务(Postgres、Redis、Chrome) pnpm run docker:up # 运行Web应用 pnpm run dev # 运行移动应用(Expo) pnpm run dev:mobile

至少需要在.env.local中配置DATABASE_URLREDIS_URLAUTH_URLMASTER_KEY(使用openssl rand -base64 32生成)。详细配置可参考Server & runtime和Database。

API接口详解

Norish在/api/v1路径下提供HTTP API接口,方便开发者进行数据交互和扩展。

认证方式

通过以下任一方式传递API密钥:

x-api-key: <your-api-key>
Authorization: Bearer <your-api-key>

注意/api/docs/api/openapi.json需要已登录的Web会话;GET /api/v1/health是公开的健康检查接口;其他所有/api/v1端点都需要API凭证。

主要端点

健康检查
  • GET /api/v1/health- 公共健康检查接口,返回API和内部解析器服务的健康状态。
食谱管理
  • GET /api/v1/recipes/{id}- 获取指定ID的食谱详情
  • POST /api/v1/recipes/search- 列出食谱,支持可选过滤条件
  • POST /api/v1/recipes/import/url- 从URL导入食谱
  • POST /api/v1/recipes/import/paste- 粘贴导入食谱

POST /api/v1/recipes/search返回分页的食谱列表,可选过滤条件包括searchsearchFieldstagscategoriesfilterModesortModeminRatingmaxCookingTimecursor默认为0limit默认为50

食材管理
  • GET /api/v1/groceries- 获取食材列表
  • POST /api/v1/groceries- 添加新食材
  • PATCH /api/v1/groceries/{id}/done- 标记食材为已购买
  • PATCH /api/v1/groceries/{id}/undone- 标记食材为未购买
  • PATCH /api/v1/groceries/{id}/store- 更新食材的存储位置
  • DELETE /api/v1/groceries/{id}- 删除食材

针对单个食材的修改端点需要version字段以实现乐观并发控制。PATCH /api/v1/groceries/{id}/store在请求体中接受storeId和可选的savePreference

商店管理
  • GET /api/v1/stores- 获取商店列表
  • POST /api/v1/stores- 添加新商店
计划食谱
  • GET /api/v1/planned-recipes/today- 获取今日计划食谱
  • GET /api/v1/planned-recipes/week- 获取本周计划食谱
  • GET /api/v1/planned-recipes/month- 获取本月计划食谱
  • POST /api/v1/planned-recipes- 添加计划食谱
  • DELETE /api/v1/planned-recipes/{itemId}- 删除计划食谱

计划食谱范围端点使用服务器时区来确定今天/周/月的边界,周范围是从周一到周日。

插件开发指南

虽然Norish目前没有专门的插件系统,但可以通过以下方式扩展功能:

共享模块开发

Norish采用模块化架构,通过创建共享模块可以实现功能扩展。主要共享模块位于packages/shared-react/src/hooks/packages/shared-react/src/contexts/目录下。

例如,创建一个新的共享钩子模块:

  1. packages/shared-react/src/hooks/目录下创建新的钩子文件
  2. 实现钩子逻辑,确保不导入特定平台的模块
  3. packages/shared-react/src/index.ts中导出新钩子

集成第三方服务

可以通过API接口集成第三方服务,例如:

  • 集成AI食材识别服务
  • 添加新的食谱导入来源
  • 连接外部日历服务

集成方式通常是创建新的API端点或使用现有端点的扩展参数,具体实现可参考packages/api/src/parser/目录下的解析器模块。

自定义主题和样式

Norish使用Tailwind CSS进行样式管理,可以通过以下方式自定义主题:

  1. 修改tooling/tailwind/heroui-theme.css文件
  2. 扩展tooling/tailwind/heroui-theme.js中的主题配置
  3. 在应用中使用自定义CSS类

高级开发技巧

测试策略

Norish使用Vitest进行测试,测试文件通常与被测试模块放在同一目录下,命名为*.test.ts*.test.tsx。可以使用以下命令运行测试:

pnpm run test

代码质量工具

项目使用ESLint和Prettier进行代码质量控制,相关配置位于tooling/eslint/tooling/prettier/目录下。提交代码前建议运行:

pnpm run lint pnpm run format

性能优化

  • 使用React.memo和useMemo优化组件渲染
  • 合理使用TanStack Query进行数据缓存
  • 优化图片加载,使用适当的尺寸和格式

总结

Norish提供了强大的API接口和模块化架构,使开发者能够轻松扩展其功能。通过本文介绍的开发环境搭建、API接口使用和插件开发方法,你可以开始构建自定义功能和集成第三方服务。如需更多帮助,请参考项目中的开发命令文档和贡献指南。

祝你的Norish开发之旅顺利! 🚀

【免费下载链接】norishNorish - A realtime, self-hosted recipe app for families & friends项目地址: https://gitcode.com/gh_mirrors/no/norish

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1276474/

相关文章:

  • HarmonyOS应用实战-启示散页-42-收藏导出别混进私密问题:导出前先做字段筛选和用户确认
  • DiT:Diffusion Transformer原理简介
  • 校招自我介绍千篇一律被面试官无视?OfferGoose 鹅来面 AI 三层设计法:30 秒定制差异化版本,拉高首因印象分
  • 2026年工业风扇定制厂家探析:大型节能厂房通风降温的源头实力与适配逻辑 - 卓企推荐
  • 规上工业增加值涨了5.4%,但排产还在用Excel?JVS-APS智能排产与您聊聊制造业数字化转型的“最后一公里“
  • 从《哆啦A梦》房子机器人看智能家居设计:如何避免系统越权与用户冲突
  • 为什么选择TonY?探索Hadoop原生深度学习框架的4大核心优势
  • TI LP87745-Q1汽车雷达PMIC评估:低噪声电源与ASIL-C功能安全实战
  • Ubuntu 24.04安装配置搜狗输入法完整指南
  • Chunky场景导入与导出全攻略:高效管理你的Minecraft渲染项目
  • AI搜索时间线不是线性的!揭示被忽略的3个断裂带、2次技术回滚与1次标准组织暗战(附原始时间戳证据链)
  • EEGLAB核心功能解析:独立成分分析(ICA)如何提升脑电信号质量
  • 多智能体系统14种失败模式的底层逻辑
  • 终极Searx入门教程:从安装到配置,5分钟拥有无广告搜索体验
  • 多款长途大件托运亲身实测|TOP4靠谱清单整理,新手寄件零踩雷 - 时讯资讯
  • Python毕设项目:基于Python的面向高校的毕业生去向信息化调查系统 毕业生就业状态更新与反馈管理平台 (源码+文档,讲解、调试运行,定制等)
  • 2026年7月发布大金空调售后服务电话24小时全新专属热线升级公示最新公告 - 全国网点服务中心
  • 越跌越卷,中国电视市场的“马太效应”才刚开始
  • 2024年Remote项目精选:50+支持远程办公的国际企业全解析
  • 大模型应用工程师技术体系与实战指南
  • Claude 3 Opus刷新ARC-AGI基准测试纪录:从记忆到推理的AI进化
  • 桌面版语音控制AI智能体:从环境配置到任务自动化实践
  • AI自动化与未来工作形态:技术如何重塑就业与社会制度
  • Zappa.js与传统Express开发对比:5个让你彻底放弃原生编码的理由
  • 解锁 SJTUBeamer 高级功能:代码块高亮、数学公式与图表完美呈现
  • 【通义千问免费功能深度解密】:2024年最新实测的7大隐藏能力,90%用户还没用全!
  • 中小企业智能客服系统选哪家?2026年靠谱推荐看这里 - 2027品牌AI展
  • DSP架构如何优化AES加密性能:从原理到工程实践
  • 视觉大语言模型技术演进与工程实践
  • 大模型时代的命名实体识别技术解析与实践