WHCSRL 技术网

go-gf中的登录_m0

登录

步骤

1.goland-终端,输入:gf init 项目名称,新建一个项目的gf 框架

go-mod里面的关联依赖可能有问题

2.配置,在config-config.toml里

将下面代码复制粘贴到自己的项目文件的同文件夹下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pmYnbe8v-1635667270026)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618193423923.png)]

将数据库的账号,密码,数据库名称和自己的对应

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1qcCVqC5-1635667270030)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618193813860.png)]

3.终端:gf gen dao

4.api是前端访问的入口(接受前端的数据,并回复)

dao是数据库访问的操作(把数据与数据库中的数据比对)

model是数据结构管理模块(对输入及输出结构定义)

service 实现特定的业务需求,可供不同的包调用。

在api文件夹下根据实际需要写接口,新建,如student.go

5.复制library文件夹

6.在api-student.go里

Login(登录)属于前端使用的入口,需要什么功能,写什么入口[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BOQwoHHS-1635667270033)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618227184295.png)]

7.在router-router.go

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LS9BV9gG-1635667270037)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618229443892.png)]

8.在model-student.go

type Student internal.Student会接收所有数据,但是我们只需要StuNo和StuPassword

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J2jsZhzg-1635667270041)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618231056756.png)]

9.在api-student.go里

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aUIf9Wfy-1635667270043)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618299407673.png)]

10.在service里新建login.go

在service-login.go里

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NmpFPc8y-1635667270045)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618301411258.png)]

11.在api-student.go里

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q74jfwXe-1635667270048)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618302873380.png)]

12.在main.go里运行一下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zedf9sAP-1635667270050)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618304029527.png)]

13.在postman里[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ONgLiEyq-1635667270053)(C:UsersAdministratorAppDataRoamingTypora ypora-user-images1618303896097.png)]

总体思路

一、在model中提前自定义一种存放账号和密码的数据类型

二、api
1、student
声明一个存放账号密码的变量
对前端传过来的数据进行解析,提取出账号和密码,放进提前准备好的变量
接下来就该进行在数据库查找是否有符合此账号密码的记录
因为student和teacher都需要进行此操作,所以把这块代码抽取出来放进service里边,详细见–>六
接收查询到的信息及可能出现的错误

​ 先处理错误,再处理数据
​ ①如果有错,告诉前端发生的错误信息
​ ②如果数据库中没有这条记录,那么登陆失败
​ ③最后一种情况:登陆成功,将数据传到前端
2、teacher
​ 同上
三、相关服务service:login
​ 利用dao里边自动生成的相关方法来查询数据库
​ 查询student,dao.Student.FindOne()
​ 查询teacher,dao.Teacher.FindOne()
​ FindOne这个方法会返回数据和错误
​ 先处理错误,如果有错误返回给调用者
tudent.FindOne()
​ 查询teacher,dao.Teacher.FindOne()
​ FindOne这个方法会返回数据和错误
​ 先处理错误,如果有错误返回给调用者
​ 正常情况下就返回数据

推荐阅读