go17/vblog/README.md
2024-12-08 10:10:37 +08:00

1.7 KiB
Raw Blame History

Web全栈开发(Vblog)

软件设计

需求

管理markdown个文字的一个网站作者后台发布文章访客前台浏览查看文章

流程

产品原型

https://gitee.com/infraboard/go-course/blob/master/new.md#%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1

架构(BS)和概要设计

业务的详细设计

直接使用Go的接口 来定义业务

// 业务域
type Service interface {
	UserService
	InnterService
}

// 1. 外部
type UserService interface {
	// 颁发令牌 登录
	IssueToken(context.Context, *IssueTokenRequest) (*Token, error)
	// 撤销令牌 退出
	RevolkToken(context.Context, *RevolkTokenRequest) (*Token, error)
}

type RevolkTokenRequest struct {
	// 访问令牌
	AccessToken string `json:"access_token"`
	// 刷新令牌, 构成一对避免AccessToken 泄露,用户可以直接 revolk
	RefreshToken string `json:"refresh_token"`
}

type IssueTokenRequest struct {
	Username string `json:"username"`
	Password string `json:"password"`
	// 记住我, Token可能1天过期, 过去时间调整为7天
	RememberMe bool `json:"remember_me"`
}

// 内部
type InnterService interface {
	// 令牌校验
	ValidateToken(context.Context, *ValidateTokenRequest) (*Token, error)
}

type ValidateTokenRequest struct {
	// 访问令牌
	AccessToken string `json:"access_token"`
}

数据库的设计伴随接口设计已经完成

  1. 如何基于Vscode 构造单元测试的配置
{
    "go.testEnvFile": "${workspaceFolder}/etc/test.env",
}

添加工作目录环境变量

WORKSPACE_DIR="/Users/xxxx/Projects/go-course/go17/vblog"

业务模块的实现

TDD (Test Drive Development)

  • 用户模块