Kitex+Hertz框架的初步搭建 | 青训营笔记

216 阅读1分钟

这是我参与「第五届青训营」笔记创作活动的第1天

大项目基础架构图

大项目基础架构.png

今天根据组内大项目的规划,进行了api部分的搭建工作。计划首先完成api部分和user部分,将整个系统跑通,后续再增加其他功能rpc模块。

一、完成api.thrift的第一版:(仅支持用户注册和用户登录功能)

namespace go api

struct User {
    1: i64 user_id
    2: string username
}

struct RegisterUserRequest {
    1: string username (api.form="username", api.vd="len($) > 0")
    2: string password (api.form="password", api.vd="len($) > 0")
}

struct RegisterUserResponse {
    1: i32 status_code
    2: string status_msg
    3: i64 user_id
    4: string token
}

struct LoginUserRequest {
    1: string username (api.form="username", api.vd="len($) > 0")
    2: string password (api.form="password", api.vd="len($) > 0")
}

struct LoginUserResponse {
    1: i32 status_code
    2: string status_msg
    3: i64 user_id
    4: string token
}

service ApiService {
    RegisterUserResponse RegisterUser(1: RegisterUserRequest req) (api.post="/douyin/user/register")
    LoginUserResponse LoginUser(1: LoginUserRequest req) (api.post="/douyin/user/login")
}
  1. 将api.thrift放在项目文件夹api的idl文件夹下,而后运行命令hz new -idl idl/api.thrift -mod api
  2. 修改biz/model/api/api.go文件中的package api\biz\model\apipackage api
  3. 执行go mod tidy命令,等待下载
  4. 执行go build命令,生成api.exe,运行
  5. 浏览器中输入127.0.0.1:8888/ping,得到如下结果,脚手架代码生成工作完成 image.png

二、参考官方提供的easy_note项目,进行工程文件夹的构建

参考链接:biz-demo/easy_note at main · cloudwego/biz-demo (github.com)

api部分文件夹初步构建如下:(忽略报错)

image.png
  • consts.go存储项目需要用到的一些全局常量,便于修改
  • errno.go负责生成项目错误代码和错误信息
  • handler中的文件处理post请求并响应
  • model中文件代码由thriftgo根据所写的api.thrift生成,不予修改,但需调用
  • mw中存储中间件代码,暂时只使用jwt.go实现token认证
  • router中代码是由Hertz根据api.thrift生成的路由信息,暂时不予修改
  • rpc中user.go代码向etcd发起resolver请求,并处理返回信息