博客系统——VBLOG_项目工程框架搭建
VBLOG_项目工程框架搭建
一、架构设计
采用前后端分离架构设计:
api:后端接口服务
golang 开发的 restful 接口
使用 mysql 做数据存储
web:vue3 前端框架
前端框架: vue3,vue-router
ui组件:arco.design(头条开源组件库)
二、接口设计
### 功能接口
2.1、管理员
- 文章上传接口
- 标题
- 标签
- 内容(后期搞个oss做图床)
- 文章管理接口
- 创建文章(Create),需要认证后才能执行
- URI: http://localhost:/vblog/api/v1/blogs/:blog_id
- Method: POST
- Body: Blog创建对象
- 删除文章(Delete),需要认证后才能执行
- URI: http://localhost:/vblog/api/v1/blogs/:blog_id
- Method: DELETE
- 更新文章(Update),需要认证后才能执行
- URI: http://localhost:/vblog/api/v1/blogs/:blog_id
- Method: PUT(全量更新)/PATH(部分更新)
- 文章列表(List),无认证接口
- URI: http://localhost:/vblog/api/v1/blogs/
- Method: GET
- Params:
- page_size: 分页的大小,默认20个
- page_number: 页码,默认第一页
- status: 草稿(管理员才能查)/发布(管理员/浏览人员)
- keywords: 关键字搜索
- 文章详情(Get),无认证接口
- URI: http://localhost/vblog/api/v1/blogs/:blog_id
- Method: GET
- 文章发布:修改文章的状态发布
- URL: http://localhost:/vblog/api/v1/blogs/:blog_id/status
- Method: POST
- Body: 状态名称
- 标签管理接口
- 添加标签(Create),需要认证才能执行
- URI: http://localhost:/vblog/api/v1/tags/
- Method: POST
- 删除标签(Delete),需要认证才能执行
- URI: http://localhost:/vblog/api/v1/tags/
- Method: DELETE
- Params:
- blog_
- 添加标签(Create),需要认证才能执行
2.2、浏览用户
- 文章上传接口
- 标题
- 标签
- 内容(后期搞个oss做图床)
- 文章管理接口
- 创建文章(Create),需要认证后才能执行
- URI: http://localhost:/vblog/api/v1/blogs/:blog_id
- Method: POST
- Body: Blog创建对象
- 删除文章(Delete),需要认证后才能执行
- URI: http://localhost:/vblog/api/v1/blogs/:blog_id
- Method: DELETE
- 更新文章(Update),需要认证后才能执行
- URI: http://localhost:/vblog/api/v1/blogs/:blog_id
- Method: PUT(全量更新)/PATH(部分更新)
- 文章列表(List),无认证接口
- URI: http://localhost:/vblog/api/v1/blogs/
- Method: GET
- Params:
- page_size: 分页的大小,默认20个
- page_number: 页码,默认第一页
- keywords: 关键字搜索
- 文章详情(Get),无认证接口
- URI: http://localhost/vblog/api/v1/blogs/:blog_id
- Method: GET
- 文章发布:修改文章的状态发布
- URL: http://localhost:/vblog/api/v1/blogs/:blog_id/status
- Method: POST
- Body: 状态名称
- 标签管理接口
- 添加标签(Create),需要认证才能执行
- URI: http://localhost:/vblog/api/v1/tags/
- Method: POST
- 删除标签(Delete),需要认证才能执行
- URI: http://localhost:/vblog/api/v1/tags/
- Method: DELETE
- 添加标签(Create),需要认证才能执行
三、原型设计
四、后端API开发
五、数据库设计
共 2 张表
mysql> show create database vblog; +----------+-------------------------------------------------------------------+ | Database | Create Database | +----------+-------------------------------------------------------------------+ | vblog | CREATE DATABASE `vblog` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ | +----------+-------------------------------------------------------------------+ 1 row in set (0.02 sec)
----------------------------------------
表 blog: 用于存储文章
id: 博客ID
title_img: 文章的标题图片(oss的地址)
title_name: 文章的标题
sub_title: 子标签
content: 博客内容
sumary: 摘要
author: 文章的作者
creat_at: 创建时间
update_at: 更新时间
publish_at:发布时间
status: 草稿/发布
| blog | CREATE TABLE `blog` ( `id` int(11) NOT NULL COMMENT '博客ID', `title_img` text NOT NULL COMMENT '标题的图片', `title_name` varchar(255) NOT NULL COMMENT '标题的名称', `sub_title` text NOT NULL COMMENT '子标题', `content` text NOT NULL COMMENT '文章的内容', `author` varchar(255) NOT NULL COMMENT '文章作者', `create_at` int(11) NOT NULL COMMENT '创建时间(时间戳)', `update_at` int(11) NOT NULL COMMENT '更新时间', `publish_at` int(11) NOT NULL COMMENT '发布时间', `status` tinyint(1) NOT NULL COMMENT '0: 草稿 ; 1:发布', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
表 tag: 用于存储文章标签
blog_id: 关联的博客ID
key: 标签的名称
value: 标签的value
color: 标签的颜色
create_at: 创建的时间
| tag | CREATE TABLE `tag` ( `key` varchar(255) NOT NULL COMMENT '标签的名称', `value` varchar(255) NOT NULL COMMENT '标签的值', `blog_id` int(11) NOT NULL COMMENT '关联的文章', `create_at` int(11) NOT NULL COMMENT '创建时间', `color` varchar(255) NOT NULL COMMENT '标签的颜色', UNIQUE KEY `idx_id` (`key`,`value`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |