- 前台
- 用户账号
- 用户信息
- 分类模块
- 标签模块
- 文章模块
- 文件上传
- 评论模块
- 留言模块
- 友情链接
- 资源模块
- 菜单模块
- 角色模块
- 博客信息
- 操作日志
- 页面模块
- v2
- 信息上报POST
文章详情
开发中
GET
/article/{id}
请求参数
Authorization
在 Header 添加参数
Authorization
,其值为在 Bearer 之后拼接 Token示例:
Authorization: Bearer ********************
Path 参数
id
integer
文章 id
示例值:
1
示例代码
Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
请求示例请求示例
Shell
JavaScript
Java
Swift
curl --location --request GET '/article/1'
返回响应
🟢200成功
application/json
Body
code
integer
必需
message
string
必需
data
object
必需
id
integer
必需
created_at
string
必需
updated_at
string
必需
img
string
必需
title
string
必需
content
string
必需
type
integer
必需
original_url
string
必需
comment_count
integer
必需
like_count
integer
必需
view_count
integer
必需
category_id
integer
必需
category
object
必需
tags
array [object {5}]
必需
last_article
object
必需
next_article
object
必需
recommend_articles
array[string]
必需
newest_articles
array [object {4}]
必需
示例
{
"code": 0,
"message": "OK",
"data": {
"id": 1,
"created_at": "2022-12-03T22:07:01.638+08:00",
"updated_at": "2022-12-07T20:53:17.517+08:00",
"img": "https://static.talkxj.com/articles/771941739cbc70fbe40e10cf441e02e5.jpg",
"title": "测试文章",
"content": "## 博客介绍\n\n<p align=center>\n<a href=\"http://www.hahacode.cn\">\n<img src=\"https://img-blog.csdnimg.cn/fe2f1034cf7c4bd795552d47373ee405.jpeg\" width=\"200\" hight=\"200\" alt=\"阵、雨的个人博客\" style=\"border-radius: 50%\">\n</a>\n</p>\n\n因最近忙于学业,本项目开发周期不是很长且断断续续,可能会存在不少 BUG,但是我会逐步修复的。\n\n您的 star 是我坚持的动力,感谢大家的支持,欢迎提交 pr 共同改进项目。\n\n\nGithub地址:[https://github.com/szluyu99/gin-vue-blog](https://github.com/szluyu99/gin-vue-blog)\n\nGitee地址:[https://github.com/szluyu99/gin-vue-blog](https://github.com/szluyu99/gin-vue-blog)\n\n## 在线地址\n\n博客前台链接:[www.hahacode.cn](http://www.hahacode.cn)\n\n博客后台链接:[www.hahacode.cn/blog-admin](http://www.hahacode.cn/blog-admin)\n\n测试账号:test@qq.com,密码:11111,前后台都可用这个账号登录\n\n在线接口文档地址:[https://is68368smh.apifox.cn/](https://is68368smh.apifox.cn/)\n\n> 本项目在线接口文档由 Apifox 生成,由于项目架构调整,有些接口待完善和修改\n\n## 目录结构\n\n代码仓库目录:\n\n```bash\ngin-vue-blog\n├── gin-blog-admin -- 博客后台前端\n├── gin-blog-front -- 博客前台前端\n├── gin-blog-server -- 博客后端\n```\n\n需要先运行后端服务,再运行前端项目,因为很多前端配置由后端动态加载(如菜单等)。\n\n> 项目运行参考:[快速开始](#快速开始)\n\n后端目录:\n\n```bash\ngin-blog-server\n├── api -- API\n│ ├── front -- 前台接口\n│ └── v1 -- 后台接口\n├── dao -- 数据库操作模块\n├── service -- 服务模块\n├── model -- 数据模型\n│ ├── req -- 请求 VO 模型\n│ ├── resp -- 响应 VO 模型\n│ ├── dto -- 内部传输 DTO 模型\n│ └── ... -- 数据库模型对象 PO 模型\n├── routes -- 路由模块\n│ └── middleware -- 路由中间件\n├── utils -- 工具模块\n│ ├── r -- 响应封装\n│ ├── upload -- 文件上传\n│ └── ...\n├── routes -- 路由模块\n├── config -- 配置文件\n├── test -- 测试模块\n├── log -- 日志文件\n├── Dockerfile\n└── main.go\n```\n\n## 项目介绍\n\n前台:\n- 前台界面设计参考 Hexo 的 Butterfly 设计,美观简洁\n- 实现点赞,统计用户等功能 (Redis)\n- 评论 + 回复评论功能\n- 留言采用弹幕墙,效果炫酷\n- 文章详情页有文章目录、推荐文章等功能,优化用户体验\n\n后台:\n- 鉴权使用 JWT\n- 权限管理使用 CASBIN,实现基于 RBAC 的权限管理\n- 支持动态权限修改,前端菜单由后端生成\n- 文章编辑使用 Markdown 编辑器\n- 常规后台功能齐全:侧边栏、面包屑、标签栏等\n\n其他:\n- 前后端分离部署,前端使用 Nginx,后端使用 Docker\n- 代码整洁层次清晰,利于开发者学习\n\n## 技术介绍\n\n> 这里只写一些主流的通用技术,详细第三方库: 前端参考 `package.json` 文件,后端参考 `go.mod` 文件\n\n前台前端:使用 pnpm 包管理工具\n- 基于 TypeScript\n- Vue3\n- Unocss: 原子化 CSS\n- Pinia\n- Vue Router \n- Axios \n- Naive UI\n- Vuetify\n- ...\n\n后台前端:使用 pnpm 包管理工具\n- 基于 JavaSciprt \n- pnpm: 包管理工具\n- Vue3\n- Unocss: 原子化 CSS\n- Pinia \n- Vue Router \n- Axios \n- Naive UI\n- ...\n\n后端技术栈:\n- 基于 Golang\n- Docker\n- Gin\n- GORM\n- Viper: 使用 TOML 作为配置文件\n- Zap\n- MySQL\n- Redis\n- Nginx: 部署静态资源 + 反向代理\n- ...\n\n其他:\n- 腾讯云人机验证\n- 七牛云对象存储\n- ...\n\n## 运行环境\n\n服务器:腾讯云 2核 4G Ubuntu 22.04 LTS\n\n对象存储:七牛云\n\n## 开发环境\n\n| 开发工具 | 说明 |\n| ----------------------------- | ----------------------- |\n| Vscode | Golang 后端 + Vue 前端 |\n| Navicat | MySQL 远程连接工具 |\n| Another Redis Desktop Manager | Redis 远程连接工具 |\n| MobaXterm | Linux 远程工具 |\n| Apifox | 接口调试 + 文档生成 |\n\n\n| 开发环境 | 版本 |\n| -------- | ---- |\n| Golang | 1.19 |\n| MySQL | 8.x |\n| Redis | 7.x |\n\n## 快速开始\n\n### 本地运行\n\n> 自行安装 Golang、Node、MySQL、Redis 环境\n\n拉取项目到本地:\n\n```bash\ngit clone https://github.com/szluyu99/gin-vue-blog.git\n```\n\n后端项目运行:\n\n```bash\n# 1、进入后端项目根目录 \ncd gin-blog-server\n\n# 2、修改项目运行的配置文件,默认加载 config/config.toml \n\n# 3、MySQL 导入 ginblog.sql\n\n# 4、启动 Redis \n\n# 5、运行项目\ngo mod tidy\ngo run main.go\n```\n\n前端项目运行: 本项目使用 pnpm 进行包管理,建议全局安装 pnpm\n\n```bash\nnpm install -g pnpm\n```\n\n前台前端:\n\n```bash\n# 1、进入前台前端项目根目录\ncd gin-blog-front\n\n# 2、安装依赖\npnpm install\n\n# 3、运行项目\npnpm run dev\n```\n\n后台前端:\n\n```bash\n# 1、进入后台前端项目根目录\ncd gin-blog-admin\n\n# 2、安装依赖\npnpm install\n\n# 3、运行项目\npnpm run dev\n```\n\n### 项目部署\n\n目前暂时不推荐将本博客部署上生产环境,因为还有太多功能未完善。\n\n但是相信本项目对于 Golang 学习者绝对是个合适的项目!\n\n等功能开发的差不多了,再专门针对部署写一篇文章。\n\n---\n\n这里简单介绍一下,有基础的同学可以自行折腾。\n\n本项目前端采用 Nginx 部署静态资源,后端使用 Docker 部署。\n\n后端 Docker 部署参考 `Dockerfile`,Docker 运行对应的配置文件是 `config/config.docker.toml`\n\nDocker 打包成镜像指令:\n\n```bash\ndocker build -t ginblog .\n```\n\n> 以上只是简单说明,等功能大致完成,会从 `安装 Docker`、`Docker 安装运行环境`、`Docker 部署项目` 等多个角度写几篇关于部署的教程。\n\n## 项目总结\n\n这个项目不管是前端,还是后端,都是花了比较大心血去架构的,并且从技术选型上,都是选择了目前最火 + 最新的技术栈。当然,这也是个人的学习之作,很多知识点都是边学边开发的(例如 Casbin),这个过程中也参考了很多优秀的开源项目,感谢大家的开源让程序员的世界更加美好,这也是开源本项目的目的之一。本项目中仍有很多不足,后续会继续更新。\n\n最后,项目整体代码风格很优秀,注释完善,适合 Golang 后端开发者、前端开发者学习。\n\n## 后续计划\n\n高优先级: \n\n- 完善图片上传功能, 目前文件上传还没怎么处理\n- 后台首页重新设计(目前没放什么内容)\n- 重写单元测试,目前的单元测试是早期版本,项目架构更改后,无法跑通\n- 前台首页搜索文章(ElasticSearch 搜索)\n- 博客文章导入导出 (.md 文件)\n- 权限管理中菜单编辑时选择图标(现在只能输入图标字符串)\n- 后端日志切割\n- 后台修改背景图片,博客配置等\n- 相册\n\n后续有空安排上:\n- 适配移动端\n- 黑夜模式\n- 前台收缩侧边信息功能\n- 说说\n- 音乐播放器\n- 鼠标左击特效\n- 看板娘\n- 文章目录锚点跟随\n- 第三方登录\n- 评论时支持选择表情,参考 Valine\n- 若干细节需要完善...\n",
"type": 1,
"original_url": "",
"comment_count": 2,
"like_count": 1,
"view_count": 34,
"category_id": 1,
"category": {
"id": 1,
"created_at": "2022-12-03T22:01:29.106+08:00",
"updated_at": "2022-12-03T22:01:29.106+08:00",
"name": "后端",
"Articles": null
},
"tags": [
{
"id": 1,
"created_at": "2022-12-03T22:01:51.624+08:00",
"updated_at": "2022-12-03T22:01:51.624+08:00",
"articles": null,
"name": "Golang"
},
{
"id": 2,
"created_at": "2022-12-03T22:01:56.984+08:00",
"updated_at": "2022-12-03T22:01:56.984+08:00",
"articles": null,
"name": "Vue"
}
],
"last_article": {
"id": 0,
"img": "",
"title": ""
},
"next_article": {
"id": 0,
"img": "",
"title": ""
},
"recommend_articles": [],
"newest_articles": [
{
"id": 1,
"img": "https://static.talkxj.com/articles/771941739cbc70fbe40e10cf441e02e5.jpg",
"title": "测试文章",
"created_at": "2022-12-03T22:07:01.638+08:00"
}
]
}
}