编程初学者的Go语言学习之旅 | 青训营笔记

47 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第9天。

前言

前文讲了hertz路由的注册,今天简单说说注册接口的具体服务实现。

整体思路

首先HTTP请求会传入两个参数,usernamepassword,我们需要对这两个参数进行处理:

  1. 判定参数是否传入成功
  2. 判定传入参数长度是否<=32
  3. 用户名需要保证唯一 以上都符合后(进行密码加密处理)将参数存入数据库里对应的数据表,然后返回响应。

判定参数传入

我们可以用hertz框架的app包中的c.GetQuery方法来提取参数。

username, usernameBool := c.GetQuery("username")
password, passwordBool := c.GetQuery("password")

此方法会返回参数本身的字符串以及一个确定是否传入成功的布尔值,通过这个布尔值我们用if语句来实现对传入成功的判定。

判定传入参数长度

我们只需使用len方法

if len(username) > 32 || len(password) > 32

即可实现判定参数长度,若不符合则返回失败的响应。

用户名保证唯一

我们可以使用gorm框架的Where方法与First方法进行指定的列名查询

result= db.Where("user_name = ?", username).First(&dbname)

此方法会返回*gorm.DB类型,我们可以对其调用Error方法,配合if语句进行错误处理。 值得注意的是,我们需要达到的效果为若有重复,则返回失败响应,而Error方法会在没有查询到数据的时候报错,所以我们应该设置为:

if result.Error == nil

达到我们想要的效果。

数据储存

值得注意的是,我们需要储存的数据不止有传入的两个参数,还有用户的Token、ID、关注数、被关注数等。需要提前定义好数据库Model对应的结构体。 对于用户Token,我们可以使用segmentio包ksuid类型,对其调用New().String()方法来随机生成一个字符串。
最后使用gorm框架的create方法进行数据INSERT,并返回成功响应。 至此,用户注册服务基本完成。