GoFrame学习随便记3(待续)

我们来处理注册、登录、身份验证、会话等问题。tbl_user 表和星辰英语本的 users 表差不多,我们对照进行。

完善一下 Goland IDE:安装 GoFrame Helper插件。参考 https://goframe.org/docs/install-go/config-env 在 File - Settings - Tools - File Watchers 下添加 go fmt、goimports、golangci-lint 这三个自带或能自动安装的工具,Level 都改成 Global (全局作用)。参考 https://goframe.org/docs/cli/gen-ctrl#%E8%87%AA%E5%8A%A8%E6%A8%A1%E5%BC%8F%E6%8E%A8%E8%8D%90

下载 watchers.xml 文件并导入,然后复制其中的 gf gen ctrl ,再把 ctrl 改成 service。(不清楚为什么,我用 GoFrame Helper 插件不能自动生成控制器和服务接口代码,用 File Watchers则可以)

创建用户注册API 接口请求: api/user/v1/user.go 文件,内容如下,保存后,File Watchers 应该会自动调用 gf gen ctrl 命令生成抽象接口文件 api/user/user.go 和控制器动作文件 internal/controller/user/user_v1_register.go (因为此前没有创建过user的控制器,所以,会同时创建空的 user.go 文件和包含创建控制器方法的user_new.go文件)

Go 复制代码
package v1

import "github.com/gogf/gf/v2/frame/g"

type RegisterReq struct {
	g.Meta   `path:"/user/register" method:"post" summary:"注册" tags:"用户"`
	Username string `json:"username" v:"required|length:2,32" dc:"用户名"`
	Password string `json:"password" v:"required|length:6,16" dc:"密码"`
	Email    string `json:"email" v:"required|email" dc:"邮箱"`
	Profile  string `json:"profile" dc:"简介"`
}

type RegisterRes struct{}

创建用户注册业务逻辑: internal/logic/lookup/lookup.go 文件,内容如下,保存后,File Watchers 应该会自动调用 gf gen service 命令生成抽象服务接口文件 internal/service/user.go (同时会修改 internal/logic/logic.go 文件 )

Go 复制代码
package user

import (
	"context"
	"gfBlogDemo/internal/dao"
	"gfBlogDemo/internal/model/do"
	"gfBlogDemo/internal/service"
)

type sUser struct {
}

func init() {
	service.RegisterUser(New())
}

func New() *sUser {
	return &sUser{}
}

func (s *sUser) Register(ctx context.Context, username, password, email string) error {
	_, err := dao.User.Ctx(ctx).Data(do.User{
		Username: username,
		Password: password,
		Email:    email,
	}).Insert()
	if err != nil {
		return err
	}
	return nil
}

修改用户注册控制器动作文件:修改自动生成的文件 internal/controller/user/user_v1_register.go ,调用业务逻辑来处理接口请求,内容如下,

Go 复制代码
package user

import (
	"context"
	"gfBlogDemo/internal/service"

	v1 "gfBlogDemo/api/user/v1"
)

func (c *ControllerV1) Register(ctx context.Context, req *v1.RegisterReq) (res *v1.RegisterRes, err error) {
	//return nil, gerror.NewCode(gcode.CodeNotImplemented)
	err = service.User().Register(ctx, req.Username, req.Password, req.Email)
	return nil, err
}

测试用户注册接口能否工作: 新建 api/user/user.http 文件,内容如下,运行它,确保返回结果无错误,然后查看数据库中 tbl_user 表是否新增对应记录

bash 复制代码
### POST user register
POST http://localhost:8000/user/register
Content-Type: application/json

{
  "username": "user1",
  "password": "password1",
  "email": "user1@gmail.com"
}

### end

待续

相关推荐
charlie1145141918 分钟前
通用GUI编程技术——图形渲染实战(二十八)——图像格式与编解码:PNG/JPEG全掌握
开发语言·c++·windows·学习·图形渲染·win32
fly_over13 分钟前
Claude Code 从零复刻教程 第 1 篇:项目初始化与 CLI 骨架
学习·源码·ai编程·工具·命令行·claude code
AI_零食18 分钟前
开源鸿蒙跨平台Flutter开发:手账记事模板库应用
学习·flutter·华为·开源·harmonyos·鸿蒙
我要成为嵌入式大佬29 分钟前
正点原子MP157--问题详解--五(beep编写报错端口繁忙)
stm32·嵌入式硬件·学习
世人万千丶33 分钟前
开源鸿蒙跨平台Flutter开发:古诗词学习应用
学习·flutter·华为·开源·harmonyos·鸿蒙
arvin_xiaoting34 分钟前
OpenClaw学习总结_IV_认证与安全_4:Multi-Account Patterns详解
人工智能·学习·安全
野指针YZZ1 小时前
XV6操作系统:proc机制学习笔记
笔记·学习
把csdn当日记本的菜鸡1 小时前
Vue3 响应式 API 简单学习
javascript·vue.js·学习
weixin_156241575761 小时前
基于django外语学习系统
学习
小小的代码里面挖呀挖呀挖1 小时前
恒玄BES蓝牙耳机开发--IIC接口应用
笔记·单片机·物联网·学习·iot