UserModel.GetForToken(token)→根据token查询用户信息TokenModel.GetAllForUser(user)→根据用户查询所有tokens这种方法的优点是,返回的实体与模型的主要职责相一致;UserModel方法返回一个用户,而TokenModel方法返回tokens。创建用户激活处理程序(activateUserHandler)上面我们从业务逻辑上介绍了查询用户和token的关系模型,下面开始编写用户激活代码。为了实现该功能需要添加PUT/v1/users/activated接口到我们的API服务中。激活流程如下:1、用户提交激活token明文(从欢迎邮件中获取)到PUT/v1/users/activated接口。2、服务端校验token明文格式是否正确,如果格式不对返回客户端相应错误。3、然后调用UserModel.GetForToken()方法,根据token查询到对应的用户信息。如果没有匹配的用户,或者token已经过期,向客户端返回错误信息。4、设置用户表中activated=true,更新用户表信息。5、从token表中删除所有对应用户的激活token。可以调用TokenModel.DeleteAllForUser()方法来完成。6、向客户端发送激活后的用户详细信息。下面从cmd/api/users.go文件开始,并创建新的activateUserHandler:File:cmd/api/users.go
packagemain...func(app*application)activateUserHandler(w