NodeTube API参考手册:完整接口文档与使用示例

张开发
2026/4/18 4:12:20 15 分钟阅读

分享文章

NodeTube API参考手册:完整接口文档与使用示例
NodeTube API参考手册完整接口文档与使用示例【免费下载链接】nodetubeOpen-source YouTube alternative that offers video, audio and image uploads, livestreaming and built-in monetization项目地址: https://gitcode.com/gh_mirrors/no/nodetubeNodeTube是一个开源的YouTube替代平台提供视频、音频和图片上传、直播流以及内置的货币化功能。本手册详细介绍了NodeTube的API接口帮助开发者快速集成和扩展平台功能。一、API概览NodeTube的API采用RESTful设计风格主要分为用户认证、内容管理、媒体操作和直播管理四大模块。所有API端点均以/api开头支持标准的HTTP方法GET、POST、PUT、DELETE。NodeTube API架构示意图展示了各模块间的交互流程核心功能关键词用户认证与授权视频/音频上传与管理直播流控制评论与互动订阅与通知二、快速开始环境准备克隆仓库git clone https://gitcode.com/gh_mirrors/no/nodetube cd nodetube npm install配置环境变量创建.env文件设置必要参数DOMAIN_NAME_AND_TLDyourdomain.com FRONTEND_SERVERfrontend UPLOAD_SERVERuploads启动服务npm startAPI基础信息基础URLhttps://yourdomain.com/api认证方式JWT Token通过登录接口获取数据格式JSON响应状态码200: 成功400: 请求错误401: 未授权404: 资源不存在500: 服务器错误三、用户认证API登录接口请求POST /api/login参数| 参数名 | 类型 | 描述 | 必需 | |--------|------|------|------| | email | string | 用户邮箱或频道URL | 是 | | password | string | 用户密码 | 是 |响应{ success: true, token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..., user: { id: 5f8d0d55b54764421b7156d5, channelUrl: demo_user, channelName: Demo User } }代码示例// controllers/backend/account.js 第63行 exports.postLogin async(req, res, next) { // 验证请求参数 req.assert(password, Password cannot be blank).notEmpty(); // passport认证逻辑 passport.authenticate(local, (err, user, info) { if (err) return next(err); if (!user) { req.flash(errors, info); return res.redirect(/login); } // 生成JWT令牌并返回 req.logIn(user, (err) { // ... }); })(req, res, next); };注册接口请求POST /api/signup参数| 参数名 | 类型 | 描述 | 必需 | |--------|------|------|------| | channelUrl | string | 频道用户名3-25字符仅字母数字下划线 | 是 | | password | string | 密码至少4字符 | 是 | | confirmPassword | string | 确认密码 | 是 |响应{ success: true, message: Account created successfully, userId: 5f8d0d55b54764421b7156d5 }四、内容管理API上传视频请求POST /api/upload权限已认证用户参数| 参数名 | 类型 | 描述 | 必需 | |--------|------|------|------| | file | multipart/form-data | 视频文件 | 是 | | title | string | 视频标题 | 是 | | description | string | 视频描述 | 否 | | category | string | 分类 | 是 | | visibility | string | 可见性public/unlisted/private | 否 |响应{ success: true, uniqueTag: abc123xyz, uploadUrl: https://uploads.yourdomain.com/uploads/demo_user/abc123xyz.mp4 }代码示例// routes.js 第54行 app.post(/upload, uploadingController.postFileUpload);编辑视频信息请求POST /api/upload/:uniqueTag/edit权限视频上传者或管理员参数| 参数名 | 类型 | 描述 | 必需 | |--------|------|------|------| | title | string | 新标题 | 否 | | description | string | 新描述 | 否 | | category | string | 新分类 | 否 | | rating | string | 内容评级 | 否 | | visibility | string | 可见性 | 否 |响应{ success: true, message: Upload updated successfully }代码示例// controllers/backend/internalApi.js 第627行 exports.editUpload async(req, res, next) { try { const uniqueTag req.params.uniqueTag; let upload await Upload.findOne({ uniqueTag }).populate(uploader); // 权限检查 const isUser req.user (req.user._id.toString() upload.uploader._id.toString()); if (!isUser !isAdminOrModerator) { return res.render(error/403); } // 更新视频信息 upload.title req.body.title; upload.description req.body.description; upload.category req.body.category; // ... await upload.save(); return res.send(success); } catch (err) { // 错误处理 } };五、媒体互动API发表评论请求POST /api/comment权限已认证用户参数| 参数名 | 类型 | 描述 | 必需 | |--------|------|------|------| | upload | string | 视频ID | 是 | | comment | string | 评论内容 | 是 | | commentId | string | 回复的评论ID可选 | 否 |响应{ success: true, comment: { id: 5f8d10a2b54764421b7156d6, text: Great video!, timeAgo: just now } }视频点赞/反应请求POST /api/react/:upload/:user权限已认证用户参数| 参数名 | 类型 | 描述 | 必需 | |--------|------|------|------| | emoji | string | 反应类型like/love/laugh/sad/dislike/disgust | 是 |响应{ success: true, status: new react created }代码示例// controllers/backend/internalApi.js 第549行 exports.react async(req, res, next) { // 权限验证 if (${req.user._id} ! req.params.user) { return res.send(Not authorized); } // 查找现有反应 const existingReact await React.findOne({ upload: req.params.upload, user: req.params.user }); // 创建或更新反应 if (!existingReact) { newReact new React({ upload: req.params.upload, user: req.params.user, react: req.body.emoji, active: true }); await newReact.save(); } else if (existingReact existingReact.active) { // 处理反应更新逻辑 } // 创建通知 await createNotification(upload.uploader._id, req.user._id, react, upload, newReact); res.send(new react created); };六、直播管理API开始直播请求POST /api/livestream/start权限已认证用户需要直播权限参数| 参数名 | 类型 | 描述 | 必需 | |--------|------|------|------| | title | string | 直播标题 | 是 | | description | string | 直播描述 | 否 | | category | string | 分类 | 是 |响应{ success: true, streamKey: live_abcd1234, rtmpUrl: rtmp://yourdomain.com/live }结束直播请求POST /api/livestream/end权限直播发起者参数| 参数名 | 类型 | 描述 | 必需 | |--------|------|------|------| | streamId | string | 直播ID | 是 |响应{ success: true, recordingUrl: https://uploads.yourdomain.com/live_recordings/demo_user/stream123.mp4 }NodeTube直播流程示意图展示了从推流到播放的完整链路七、错误处理API错误响应格式统一为{ success: false, error: { code: ERROR_CODE, message: Human readable error message } }常见错误码INVALID_PARAMS: 请求参数无效AUTH_REQUIRED: 需要认证PERMISSION_DENIED: 权限不足RESOURCE_NOT_FOUND: 资源不存在RATE_LIMIT_EXCEEDED: 请求频率超限八、接口调用示例使用JavaScript调用评论APIasync function postComment(uploadId, commentText) { const token localStorage.getItem(jwt_token); const response await fetch(/api/comment, { method: POST, headers: { Content-Type: application/json, Authorization: Bearer ${token} }, body: JSON.stringify({ upload: uploadId, comment: commentText }) }); const result await response.json(); if (result.success) { console.log(Comment posted successfully); } else { console.error(Error posting comment:, result.error.message); } }九、扩展与定制NodeTube的API设计允许开发者轻松扩展功能。主要扩展点包括自定义认证修改config/passport.js实现第三方登录新API端点在routes.js中添加新路由对应controllers/backend中的处理函数事件钩子利用lib/helpers/notifications.js添加自定义通知逻辑十、API文档更新日志v1.0初始版本包含用户认证、视频上传和评论功能v1.1添加直播流管理APIv1.2增加内容评级和敏感内容过滤API附录完整API列表端点方法描述权限/api/loginPOST用户登录公开/api/signupPOST用户注册公开/api/uploadPOST上传媒体文件已认证/api/upload/:uniqueTag/editPOST编辑媒体信息上传者/管理员/api/commentPOST发表评论已认证/api/react/:upload/:userPOST媒体反应已认证/api/subscribePOST订阅频道已认证/api/livestream/startPOST开始直播已认证/api/livestream/endPOST结束直播直播者完整API文档可参考项目源代码controllers/backend/【免费下载链接】nodetubeOpen-source YouTube alternative that offers video, audio and image uploads, livestreaming and built-in monetization项目地址: https://gitcode.com/gh_mirrors/no/nodetube创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章