Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oldme-git/oldme-api
个人博客接口
https://github.com/oldme-git/oldme-api
Last synced: about 2 months ago
JSON representation
个人博客接口
- Host: GitHub
- URL: https://github.com/oldme-git/oldme-api
- Owner: oldme-git
- License: mit
- Created: 2023-04-26T03:37:17.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-14T05:52:46.000Z (2 months ago)
- Last Synced: 2024-10-14T09:34:27.223Z (2 months ago)
- Language: Go
- Homepage: https://oldme.net
- Size: 20.6 MB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
- awesome-gf - oldme-api - oldme-api 是一个基于GoFrame 的前后端分离的个人博客系统,可做为学习 gf 的参考项目。欢迎访问我们博客来一起交流学习:[oldme](https://oldme.net)。 (StandAlone Projects)
README
# oldme 个人博客接口
- https://oldme.net 个人博客网站,本项目可以做为 `GoFrame` 的初学参考,会一直更新使用 `Go` 和 `GF` 的最新版本
- 使用 `Go` + `GoFrame` 开发,感谢 `GoFrame`:https://github.com/gogf/gf
- 后台登录组件使用golang-jwt/jwt:https://github.com/golang-jwt/jwt
- 前端基于 `Vue3` + `Nuxt3` 开发# 版本信息
- Go v1.19+
- GoFrame v2.7.2# 功能模块
- 文章分类管理
- 文章发布
- 句子收集
- 友情链接
- 文章回复功能
- 图片文件上传
- 富文本图片文件处理
- 后台登录认证# 特色功能设计
## 接口异常和错误的区别
业务开发中,通常有**错误**和**异常**两种 `err`,我这里暂且这么称呼,也有的称为业务异常(错误)和系统异常(异常)。错误是由用户输入不当引起的,比如说账号密码错误,这种 `err` 通常只返回给用户即可,不需要打印堆栈信息。而异常是由系统内部自发引起的,比如说 `SQL` 语句不当,这种错误需要打印堆栈信息,且不能把 `err` 返回到用户那里。`oldme-api` 合理的处理了两种不同的 `err`,他们体现在 `intrnal->pecked->err.go` 下。## model设计
网站的前后台接口响应通常是不一样的,前台接口的响应数据总是要过滤掉一些敏感信息,比如文章的软删除字段,就不能返回给前台接口。
在 `gf` 的标准路由中,以一个结构体来定义一个接口的响应数据结构,按照简单的设计,后台和前台应各自定义一个结构体,用来处理不同的响应,但像文章标题、作者、创建时间这种信息是两者公用的,我们的两个结构体就不可避免的大量定义重复的字段。
为了解决这个问题,我们可以基于 `gf` 生成的标准数据结构,也就是 `model.entity` 下的文件。在此基础上,使用空结构体和 `omitempty` 标签来剔除掉不想返回的信息,这样就可以优雅的解决这一问题,请参考:https://github.com/oldme-git/oldme-api/blob/master/internal/model/article.go# 部署
- git clone https://github.com/oldme-git/oldme-api
- 安装 mysql 数据库,运行 manifest/sql/oldme.sql 文件
- 安装 redis
- 修改 manifest/config下config.yaml配置文件
- 安装 go.mod 依赖
- 运行 go run main.go# 特别注意
- Logic 和 Api 之间在应该单独定义
- Logic 弃用 `gf gen service`