# CodeShareHub **Repository Path**: he-meiyi/code-share-hub ## Basic Information - **Project Name**: CodeShareHub - **Description**: koa开发的CoderShareHub专为程序员设计的社交平台提供接口(后端api) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://apifox.com/apidoc/shared-84527328-7d53-48f7-8c6e-0fc59fb592e1 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-11-04 - **Last Updated**: 2024-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CoderShareHub ## 1. 官方主页 - **[接口文档](https://apifox.com/apidoc/shared-84527328-7d53-48f7-8c6e-0fc59fb592e1)** - **[部署地址](http://124.70.2.249:8881/)** - **[测试接口](http://124.70.2.249:8881/moment?offset=10&size=10)** ## 2. 介绍(技术栈) CoderShareHub是一个旨在为程序员提供分享生活动态的平台。该项目采用Koa框架搭建,具有以下特点和技术亮点: - **分层架构**:采用了清晰的分层结构,包括路由、控制器和服务,以提高代码的可维护性和可扩展性。 - **数据库封装**:通过使用database.js和connection模块,对数据库进行了良好的封装,使数据库操作更为简便。 - **中间件verifyUser**:用于验证用户注册时的用户名和密码,以及检查用户名是否已存在,确保用户信息的有效性。 - **密码加密**:通过md5加密对用户密码进行存储,提高密码的安全性。 - **登录凭证管理**:实现了基于cookie和session的登录凭证管理,同时探讨了token颁发和验证机制,以及非对称加密颁发令牌的方案。 - **动态接口**:提供了发表动态、查询动态列表、修改动态、删除动态等接口,以满足用户对动态内容的操作需求。 - **评论接口**:支持用户发表和回复评论,实现了丰富的互动功能。 - **标签接口**:实现了创建标签、多对多关系处理以及为动态添加标签的功能,丰富了动态内容的标注。 - **文件上传**:提供了文件上传接口,包括头像上传和图片展示,同时将图片的URL保存在用户表中。 - **服务器部署**:在Node环境下的服务器搭建、MySQL数据库的部署,以及使用pm2进行Node进程管理的方法。 ## 4. 安装 - Clone项目:`git clone https://gitee.com/he-meiyi/code-share-hub.git` - 安装依赖:`npm install` ## 5. 快速开始 1. 进入项目目录 2. 运行应用:`npm start` 3. 访问 [http://localhost:8080](http://localhost:8080/) ## 6. 功能列表 | 接口分类 | 接口数量 | 描述 | | -------------------------- | -------- | ------------------ | | 用户接口 | 2 | | | (用户接口)用户注册接口 | 1 | POST 用户注册接口 | | (用户接口)获取头像 | 1 | GET 获取头像 | | 登陆接口 | 2 | | | (登陆接口)登陆接口 | 1 | POST 登陆接口 | | (登陆接口)测试接口 | 1 | GET 测试接口 | | 动态接口 | 6 | | | (动态接口)发表动态 | 1 | POST 发表动态 | | (动态接口)查询动态列表 | 1 | GET 查询动态列表 | | (动态接口)根据id查询动态 | 1 | GET 根据id查询动态 | | (动态接口)根据id修改动态 | 1 | PAT 根据id修改动态 | | (动态接口)根据id删除动态 | 1 | DEL 根据id删除动态 | | (动态接口)添加标签 | 1 | POST 添加标签 | | 评论接口 | 2 | | | (评论接口)新建评论 | 1 | POST 新建评论 | | (评论接口)回复评论 | 1 | POST 回复评论 | | 标签接口 | 1 | | | (标签接口)创建标签 | 1 | POST 创建标签 | | 上传 | 1 | | | (上传接口)头像上传 | 1 | POST 头像上传 | ## 7.技术点细节 | 技术点 | 描述 | | -------------------- | ------------------------------------------------------------ | | 项目的搭建 | 通过koa创建app,将一些常量保存.env | | 注册的接口 | 分层架构,router、controller、service;数据库封装,database.js、connection;中间件verifyUser,用户名和密码不能为空,用户名是否已经存在;对密码进行加密存储中间件,对密码进行md5加密,进行存储 | | 登录的凭证 | http是无状态的协议,cookie,客户端设置cookie | | 登录凭证的服务器设置 | 服务器设置cookie,浏览器接受cookie并且客户端保存,之后的作用域其他网络请求会自动携带cookie,服务器获取cookie并且验证cookie | | 服务器使用session | 基于cookie,cookie中信息和内容进行加密处理,加密签名,早期登录凭证:cookie+session | | cookie+session缺点 | iOS/Android需要自己管理cookie+session;分布式系统和服务器集群,很难由一台服务器或者一个子系统生成sessionid,其他的子系统/服务器验证;Token: 令牌 | | token的颁发和验证 | jsonwebtoken,jwt.sign,jwt.verify,缺点:对称加密 | | 非对称加密颁发令牌 | private.key,public.key | | 服务器中实现登录逻辑 | 登录接口,验证信息,verifyLogin,颁发令牌 | | 登录测试 | 验证信息,verifyAuth,其他逻辑 | | 实现动态接口 | 发表动态,查询动态,动态列表,动态详情,修改动态,verifyAuth,verifyPermission,update,删除动态,verifyAuth,verifyPermission,remove,verifyPermission优化 | | 实现评论接口 | 发表/回复评论,新建评论,回复评论 | | 查询动态 | 动态列表展示评论的个数,子查询;动态详情展示评论的列表,将数据转成数组/对象 | | 标签接口 | 创建标签,多对多关系处理,为动态添加标签,verifyAuth,verifyPermission,verifyLableExists,存在则直接使用,不存在则将label添加到label表,添加momentId和labelId之间的关系,动态列表展示标签个数 | | 文件上传 | 文件上传接口,展示图片接口,将图片avatarURL保存user表中 | | 项目部署 | 服务器环境搭建,Node,MySQL,MySQL备份和恢复,部署Node服务器,pm2 Node进程工具 |