Task04:前后端基础及交互

0.代码版本

该专栏的博客当中涉及的所有代码,均为组队学习期间的版本,大概在2021年12月12日左右,某一个可能的参考版本链接如下:

https://github.com/datawhalechina/fun-rec/tree/9bcfafaae339c443cc7911b9070bf52adef9e994

1. 前端部分

1.1 主要文件

PS D:\Project\fun-rec\codes\news_recsys\news_rec_web> tree /f /a
卷 Data 的文件夹 PATH 列表
卷序列号为 7876-8A9C
D:.
\---Vue-newsinfo
    |   .babelrc
	|	ES6转码的配置文件
	|
    |   package-lock.json
	|	锁定安装时的包的版本号
	|	保证大家的依赖能一致
	|
    |   package.json
	|	依赖包的配置文件
	|	配置前端项目运行脚本
	|
    |   README.md
	|	说明文件
	|
    |   vue.config.js
	|	vue项目的配置文件
	|
    |   webpack.config.js
	|	webpack的配置文件
	|	用于打包整个项目
    |
    \---src
        |   App.vue
		|	根组件
		|
        |   index.html
		|	项目主页面
		|
        |   main.js
		|	主脚本文件
		|	用于定义全局变量
		|	同时可以引入插件
		|
        |   router.js
		|	路由脚本文件
		|	配置url链接与页面组件的映射
		|
        |   store.js
		|	管理用户的各种状态
        |
        +---api
        |       newVue.js
		|		不太清楚是什么作用
		|		只有两行代码的import
		|		结合下面的文件,感觉没用
		|
        |       Vue╕№╨┬░ц ╧ю─┐║═api╜╙┐┌╦╡├ў╬─╡╡ги╧ю─┐╓╨╦∙╙╨╡─╜╙┐┌╬─╡╡╥╘┤╦╬к╫╝гй-╫ю╨┬.docx
		|		一个word文档,好像是某个库的各个API描述,但是看起来与本项目无关
        |
        +---assets
        |   |   logo.png
		|	|	vue的logo文件
        |   |
        |   +---css
        |   |       index.less
		|	|		不知道是什么,感觉没用
		|	|
        |   |       sign.css
		|	|		用户登录注册页面的装饰
		|	|
        |   |       tab.css
		|	|		vant顶部导航装饰
		|	|		但是没有在本项目使用
		|	|
        |   |       test.css
		|	|		顶部导航栏装饰
		|	|		就是推荐和热门两个tab
        |   |
        |   \---js
        |           cookie.js
		|			定义cookie的相关操作
        |
        +---components
        |       bottomBar.vue
		|		底部组件,就是我的和新闻两个tab
		|
        |       common.vue
		|		存放全局变量
		|
        |       hotLists.vue
		|		热门页
		|
        |       Myself.vue
		|		个人中心
		|
        |       NewsInfo.vue
		|		新闻详情页
		|
        |       recLists.vue
		|		推荐页
		|
        |       signIn.vue
		|		登录页面
		|
        |       signUp.vue
		|		注册页面
        |       
        +---images
        |       datawhale.png
		|		DataWhale头像
		|
        |       dw.png
		|		DataWhale二维码
        |
        \---lib
            \---mui
			 \--饿了么的Mint UI库
			  \-但是没有在本项目使用
			   \
                +---css
                |       icons-extra.css
                |       mui.css
                |       mui.min.css
                |
                +---fonts
                |       mui-icons-extra.ttf
                |       mui.ttf
                |
                \---js
                        mui.js
                        mui.min.js

1.2 主要组件

1.2.1 signUp.vue

在这里插入图片描述

1.2.2 signIn.vue

在这里插入图片描述

1.2.3 recLists.vue

在这里插入图片描述

1.2.4 hotLists.vue

在这里插入图片描述

1.2.5 NewsInfo.vue

1.2.6 Myself.vue

2. 后端部分

2.1 主要文件

从前后端交互的角度来讲,主要的只有server.py这个文件在直接处理请求

2.2 主要组件

2.2.1 register()

@app.route('/recsys/register', methods=["POST"])

接收前端传来的注册请求及用户信息

首先要查重,使用UserAction().user_is_exist()来检查用户名

重复则返回,不重复则从雪花算法获取一个独特的uid

然后依次检查用户信息的合法性,不合法返回错误

合法则用UserAction().save_user()存入MySQL

2.2.2 login()

@app.route('/recsys/login', methods=["POST"])

接收前端传来的登录请求及登录信息

UserAction().user_is_exist来检查用户名和密码

成功则返回200状态,否则就返回其他状态

2.2.3 rec_list()

@app.route('/recsys/rec_list', methods=["GET"])

接收前端传来的获取推荐的请求及其对应参数

recsys_server.get_cold_start_rec_list_v2()获得推荐结果

也就是OnlineServer().get_cold_start_rec_list_v2()函数

2.2.4 hot_list()

@app.route('/recsys/hot_list', methods=["GET"])

接收前端传来的获取热门的请求及其对应参数

recsys_server.get_hot_list_v2()获得热门列表

也就是OnlineServer().get_hot_list_v2()函数

2.2.5 news_detail()

@app.route('/recsys/news_detail', methods=["GET"])

接收前端传来的获取新闻的请求及其对应参数

recsys_server.get_news_detail()获得新闻内容

也就是OnlineServer().get_news_detail()函数

同时,需要检查该用户是否对该文章点赞和收藏

也就是UserAction().get_likes_counts_by_user(user_id,news_id)

UserAction().get_coll_counts_by_user(user_id,news_id)

2.2.6 actions()

@app.route('/recsys/action', methods=["POST"])

接收前端传来的用户行为请求及其对应参数

如果是likecollection,那就要检查状态

已经有过,这次就是取消,删除对应的记录

UserAction().del_likes_by_user(userid,newsid)

UserAction().del_coll_by_user(userid,newsid)

还没有过,这次就是记录,新增对应的记录

UserAction().save_one_action(userlikes)

UserAction().save_one_action(usercollections)

不管状态检查的结果如何,日志都是照常记录的

也就是LogController().save_one_log(logitem)

3. 交互图示

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值