Skip to content

zerocath/PivotStudioPrac

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

PivotStudioPrac

后端项目实习,以下两个项目选项二选一。项目管理选择Github进行git管理,请在该仓库创建以自己名字为名的分支,注请把github账户私戳给我,邀请进入该仓库。
仓库在这里:)

1. 博客项目

个人博客主要由认证系统与发帖系统组成。现在需要自己实现一个基础的个人博客后端项目。

  • 注册账号,登录以及忘记密码
    创建数据库,创建一个表,然后通过与数据库交互进行该模块的操作。值得一提的是在数据库存用户密码的时候,不要存明文,通常对密码hash后存入数据库。登陆的时候可以使用Cookie技术,这样在之后可以记住登陆的状态(库函数可以完成这个功能,可以去查一些资料)Cookie技术简单来说就是登录成功后,后端在response信息中放置一个Set-Cookie(这是一个键值对,Set-Cookie:blabla)。浏览器在发现set-cookie这个response里的信息时,再之后的request头带一个cookie。之后服务器端检验cookie的有效性即可实现访问对应的资源。
  • 所有对于资源的(所发帖子)访问必须先登录
    可以编写中间件,请求发送之后检查请求头是否拥有登陆时候的Cookie,如果没有则直接返回400状态码,提示登陆。也可以在每个api的第一步首先检验cookie是否有效。
  • 登陆后,用户可以进行发帖,查看自己的帖子,对之前发帖信息进行编辑以及删除自己所发的帖子
    创建关于帖子的数据库,然后进行数据库的增删查改。那么后端如何知道是哪个用户在发帖呢?Cookie在生成的时候可以设置cookie里存储一些什么样的信息。比如我可以存储用户的用户名,这样就可以在需要的时候获取用户名,确定究竟是哪个用户在操作。
  • 建议大二的同学添加邮件服务,在注册的时候可以使用邮件发送验证码
    这个主要是使用邮件的SMTP服务,首先要去邮件客户端开启SMTP服务并获得一个密钥,然后使用Go进行SMTP服务发送邮件。生成验证码可以存储在数据库里,然后在验证的时候去查询数据库即可。
  • *精力充沛的的同学可以添加评论功能
    评论需要创建一个新表,评论与帖子具有某种关系,需要分析关系(一对一,一对多,多对多?)然后设计一个数据库。能够完成增删查改就可以了:)

ZhihuDailyGenerator

知乎是一个质量较高的中文社区,但是现在用户不希望频繁打开app去刷热榜下的高赞回答以及看我喜欢的答主所发的内容。所以希望通过生成包含若干热榜下高赞回答的知乎日报,并以邮件形式给订阅用户发送。该项目将作为服务在后台运行。简要来说需要实现以下要求:

  • 知乎日报可以由热榜的高赞回答构成,需要获取某话题下的若干个回答的信息,例如回答内容,赞数,答主信息等
    知乎很多信息需要登录才能获取,所以说首先你需要获取你自己知乎的Cookie(可以浏览器按F12然后找到一个请求在里面找到)。使用Go获取内容的时候,我们需要制作一个Http请求,我们可以使用http库,什么库都可以只要能发请求即可。配置请求头的相关参数,并把Cookie加到请求头中。这样完成了对知乎资源页面的访问。
    请求发送后获得了html界面的内容,那么如何获取里面的内容,赞数作者等信息呢?我们可以选择html parser(找一个htmlparser第三方库进行解析html从中获取我们想要的内容),当然也可以选择使用正则表达式对想要获取的内容进行匹配。甚至可以选用函数对获取的字符串进行处理,不过我十分不建议用这种过于丑陋的方法。

  • 可以将获得的数据保存为txt文件
    这个就是文件的IO操作,开启文件->以一定的格式写内容->关闭文件

  • 大二的同学建议定时将所获取生成的文件以邮件格式发送给指定用户
    关于邮件的内容项目1里面有介绍,可以看下了解大致的使用思路。

  • *精力充足的同学建议实现对指定对特定知乎用户更新的推送
    实现一个函数对是否更新定期扫描,如果检测到更新(思考下如何判断一个用户更新了内容),然后获取更新的内容并以邮件发送。

blabla

Blabla

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published