web 版阅读器设计
项目
端午给自己的礼物,web 版 pdf 阅读器
实现功能
- 书架展示
- 书架的管理
- 添加
- 删除
- 管理员权限
- 书籍的阅读
- 前后翻页
- 笔记功能
技术选型
- 前端 : jq layui
- 后端 : golang unipdf
- 存储 : mysql
- 部署 : nginx 做前端服务器,主要作用是做反向代理;golang 做 static 文件的存储 如速度太慢可以考虑上 cdn; mysql 用 docker 部署,和腾讯云服务器中的其他组件进行隔离,配置 phpmyadmin 进行 UI 管理
大体设计
1、所有的展示功能不做权限控制,所有的用户都可以看见
2、书籍管理功能做权限控制,具备登录登录能力,登录后每次,将 用户名和密码 md5 写入 cookie,每一次请求都将 cookie 带上
3、后端解析 pdf 得到页面和 当前内容(文字 表格 图片),下发给前端做页面展示
4、笔记只支持页面级别的记录,减小开发难度
表结构和相关接口
数据表
# 用户表
create table user {
id int ,
name ,
passwd,
avater,
ctime,
mtime,
}
#笔记表
create table note {
id
userid
book
content
image
ctime,
mtime,
}
#
create table book {
name
up_user_name
filepath
pathtype
ctime
mtime
}
接口
书籍上传接口
Method : POST
path : /book/update
body:
user_name : {string}
book : file
resp:
{
"errno":0,
"msg":""
}
书籍列表接口
Method :GET
path : /book/list?start={int}&sum={int}
resp :
{
"errno":0,
"errmg":""
"data":[
{
"name":"",
"image":"",
"id":"",
},
]
}
阅读接口
Method : GET
/book/get?book_id={int}&page={int}
resp :
{
"errno":0,
"msg":"",
"data":{
"content":"",
"hasnote": true/false,
"note":""
}
}
笔记上传接口
/note/update?
quest
{
"bookid":{int},
"content":"",
}
{
"errno":0,
"msg":""
}
风险点
1、 个人项目,权限这块破解程度比较容易
2、请求实时解析 pdf,性能有较大有影响,如果接入流量过大,可以预处理好 pdf
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于