package {{.PkgName}} import ( "net/http" {{if .After1_1_10}}"github.com/zeromicro/go-zero/rest/httpx"{{end}} {{.ImportPackages}} ) func {{.HandlerName}}(svcCtx *svc.ServiceContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { {{if .HasRequest}}va...
之前我们简单介绍过 Go-zero 详见《Go-zero:开箱即用的微服务框架》。这次我们从动手实现一个 Blog 项目的用户模块出发,详细讲述 Go-zero 的使用。 特别说明本文涉及的所有资料都已上传 Github 仓库 “kougazhang/go-zero-demo”, 感兴趣的同学可以自行下载。 Go-zero 实战项目:blog 本文以 blog 的网站后台为例...
我们期望的是文档即协议,协议即服务,这个理念与go-zero的api定义不谋而合。 我们定义了BFF层,BFF是对外提供HTTP接口的统一出口,所以我们这里API的定义主要是针对BFF服务的API的定义。 API的兼容性 我们定义或修改API的时候一定要考虑向前兼容,如下几种情况是向前兼容的: 增加新的API接口协议 请求参数添加字段,需要保...
urlvarchar(255) NOT NULL COMMENT 'original url', PRIMARY KEY(shorten) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 创建DB和table ```sql create database gozero; ``` ```sql source shorturl.sql; ``` 在rpc/transform/model目录下执行如下命令生成CRUD+cache代码,-c表示使用redis cache ```sh...
go-zero 路由规则 在使用 go-zero 开发项目时,定义路由需要遵守如下规则: 路由必须以/开头 路由节点必须以/分隔 路由节点中可以包含:,但是:必须是路由节点的第一个字符,:后面的节点值必须要在结请求体中有path tag声明,用于接收路由参数 路由节点可以包含字母、数字、下划线、中划线 ...
在go-zero中默认集成了缓存model数据的功能,我们在使用goctl自动生成model代码的时候加上-c参数即可生成集成缓存的model代码 goctl model mysql datasource -url="root:123456@tcp(127.0.0.1:3306)/product"-table="*"-dir="./model"-c 通过简单的配置我们就可以使用model层的缓存啦,model层缓存默认过期时间为7...
zerousersmodel_gen.go:基本的增删改查方法,不推荐手动修改; zerousersmodel.go:自定义的model,可以在这里新增所需要的数据库操作接口及其实现。 新增操作接口及其实现 主要代码都在 zerousersmodel.go,这里使用了反射对拼接的sql语句进行了优化: 注意:其实自定义的操作接口应该都加入context参数,便于链路追踪,这一...
url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true username=root password=123456 #<!-- 初始化连接 --> initialSize=10 #最大连接数量 maxActive=50 #<!-- 最大空闲连接 --> maxIdle=20 #<!-- 最小空闲连接 --> ...
go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero 中的 api,rpc,数据库等涉及的代码,都可以给我们一键生成,无需耗费我们什么精力 只需要在生成的代码中填入自己的配置以及逻辑即可,咱们使用 go-zero 可以轻松做到如下效果: 轻松获得...