go+vue实现掘金小册阅读
datehoer 5/22/2023 govue
之前通过爬虫采集了一些掘金小册的内容,当时只保存了对应的html。
一直希望可以找个开源的项目将掘金小册展示出来供自己阅读,但是翻遍了GitHub都没有找到我喜欢的。
所以只能自己开发。
# 技术选取
本来是想要用python+html实现一个简单的页面:当时的构思是用fastapi构建接口,然后利用html+jquery+bootstrap实现前端页面。
但是感觉都2023年了还是这样实现有点low,然后因为工作有点忙以及需要打游戏,就搁置了。
但是最近又想要实现这个项目了。
这次选取的是利用go实现接口,然后用vue构建前端页面。
# 接口
大概实现了注册,登录,获取所有图书信息,获取单独图书信息,获取文章详情这几个接口
# 获取所有图书信息
- 请求方式:GET
- URL:/books
- 描述:用于获取所有图书的信息
- 返回数据格式:
- [{"book_name":"", "book_id":"", "article_count":"", "tag":""}]
# 分页获取图书信息
- 请求方式:GET
- URL:/books?page={page_number}
- 描述:用于分页获取图书的信息,每页返回10条数据
- 参数:
- page_number (必需):页码,表示需要获取的页数
- 返回数据格式:
- [{"book_name":"", "book_id":"", "article_count":"", "tag":""}]
# 获取书籍详情
- 请求方式:GET
- URL:/book?book_id={book_id}
- 描述:用于获取特定书籍的详细信息
- 参数:
- book_id (必需):书籍ID,表示需要获取的书籍的唯一标识
- 返回数据格式:
- {"book":{"book_name":"", "book_id":"", "article_count":"", "tag":""}, "article":[{"id": 1,"book_id": "","title": "","content": "","num": 1 }]}
# 获取文章详情
- 请求方式:GET
- URL:/article?article_id={article_id}
- 描述:用于获取特定文章的详细信息
- 参数:
- article_id (必需):文章ID,表示需要获取的文章的唯一标识
- 返回数据格式:
- {"id":"", "book_id":"", "title":"", "content":"", "num": ""}
# 登录
- 请求方式:POST
- URL:/login
- 描述:用于登录,设置cookie
- 参数:
- username (必需):用户名
- password (必需):用户密码
# 注册
- 请求方式:POST
- URL:/register
- 描述:用于注册
- 参数:
- username (必需):用户名
- password (必需):用户密码
# 前端
这里我选择的是利用vue cli创建项目,然后通过axios构建请求获取数据。
# 踩坑
一个很难受的坑就是跨域请求。这里是问了一下做前端的同事,然后他跟我说用proxy代理解决。但是我设置代理后,发现response会返回set-cookie,但是浏览器并没有设置,最后发现是我的cookie设置有问题
cookie := &http.Cookie{ Name: "auth", Value: cookieValue, Expires: time.Now().Add(24 * time.Hour), // 设置Cookie过期时间 }
1
2
3
4
5这里我没有加Path以及HttpOnly,然后就设置不上去,加上后就可以了。