这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
如何安装Docker
使用官方提供的Docker一键安装脚本
curl -fsSL get.docker.com -o get-docker.sh
chmod +x get-docker.sh
sudo sh get-docker.sh
docker -version
如何安装Postman
进入官网下载安装
如何安装Git
git官网
体验Hertz
通过快速开始 | CloudWeGo生成一个简单的Hertz项目
// Code generated by hertz generator.
package numService
import (
"context"
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/protocol/consts"
numService "hertz/demo/biz/model/numService"
)
type test struct {
Num int64
Msg string
Data []*numService.Post
}
// PostsMethod .
// @router /num [GET]
func PostsMethod(ctx context.Context, c *app.RequestContext) {
var err error
var req numService.NumServiceReq
err = c.BindAndValidate(&req)
if err != nil {
c.String(consts.StatusBadRequest, err.Error())
return
}
//放入数据库
//链接数据库
dsn := ""
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
//var results []map[string]interface{}
var result []*numService.Post
db.Table("posts").Where("parent_id = ?", req.ParentID).Find(&result)
fmt.Printf("%#v", result)
resp := new(numService.NumServiceResp)
resp.Msg = "ok"
resp.Num = int64(len(result))
resp.Data = result
resp1 := test{}
resp1.Data = result
c.JSON(consts.StatusOK, resp1)
}
写一个简单的业务逻辑,测试并获取到正确的返回值
通过写IDL使用hz自动生成代码
namespace go post
struct PostsReq {
1: string context (api.query="context");
2: i64 parent_id (api.query="parent_id")
}
struct PostsResp {
1: i64 code;
2: string msg;
}
service PostsService {
PostsResp PostsMethod(1: PostsReq request) (api.post="/posts");
}
使用hz new -idl idl/hello.thrift创建新项目
在handler中添加自己的业务逻辑
使用hz update -idl idl/hello.thrift可以更新自己的项目
IDL是什么
IDL是Interface description language的缩写,指接口描述语言,是CORBA规范的一部分,是跨平台开发的基础。
基本数据类型
(1)基本数据类型:OMG IDL基本数据类型包括short、long和相应的无符号(unsigned)类型,表示的字长分别为16、32位。
(2)浮点数类型:OMG IDL浮点数类型包括float、double和long double类型。其中float表示单精度浮点数,double表示双精度浮点数,long double表示扩展的双精度浮点数。
(3)字符和超大字符类型:OMG IDL定义字符类型char为面向字节的码集中编码的单字节字符; 定义类型wchar为从任意字符集中编码的超大字符。
(4)逻辑类型:用boolean关键字定义的一个变量,取值只有true和false。
(5)八进制类型:用octet关键字定义,在网络传输过程中不进行高低位转换的位元序列。
(6)any数据类型:引入该类型用于表示OMG IDL中任意数据类型。