RK-BOOT 框架实战

RK-BOOT 框架实战

首页游戏大全代号EOE国际服更新时间:2024-06-15
RK-BOOT 框架实战(1)

rk-boot 框架能够通过yaml配置文件的形式快速启动流行的代码框架。适用于Gin,Fiber,Zero等代码框架。

1. rk-boot框架的优点和存在的必要型

以Gin 框架为例。

rk-boot是在各种流行的框架的基础之上进行了相关的封装。当然如果自己在开发的同时,也能够实现这种封装的功能。这些功能包款Database的初始化,JWT的相关配置,以及系统日志的记录,以及Swagger相关文档的生成配置登。rk-boot中完美的将这些功能集成子啊yaml文件中,并实现了系统开发的可插拔的特性。让用户不用过多的将精力放在功能的初始化操作中,让使用者更多的关注系统中业务逻辑的开发。

1.1 优点(官方文档)1.2 内置插件

rk-boot,除了封装了流行的框架外,还提供了database,CORS,zap等插件。

而这些插件的使用,仅仅是通过配置文件 boot.yaml 就可以启用。

2. 快速启动Web服务2.1 实现的功能2.2 实践2.2.1 创建boot.yaml配置文件

gin: - name: greeter port: 8080 # 监听端口 enabled: true # 开启 gin 微服务 sw: enabled: true # 开启 Swagger UI,默认路径为 /sw docs: enabled: true # 开启 API Doc UI,默认路径为 /docs prom: enabled: true # 开启 Prometheus 客户端,默认路径为 /metrics middleware: logging: enabled: true # 开启 API 日志中间件 prom: enabled: true # 开启 API Prometheus 中间件 meta: enabled: true # 开启 API 原数据中间件,自动生成 RequestID 2.2.2 创建main.go文件

package main import ( "context" "fmt" "github.com/gin-gonic/gin" "github.com/rookie-ninja/rk-boot/v2" "github.com/rookie-ninja/rk-gin/v2/boot" "net/http" ) // @title Swagger Example API // @version 1.0 // @description This is a sample rk-demo server. // @termsOfService http://swagger.io/terms/ // @securityDefinitions.basic BasicAuth // @contact.name API Support // @contact.url http://www.swagger.io/support // @contact.email support@swagger.io // @license.name Apache 2.0 // @license.url http://www.apache.org/licenses/LICENSE-2.0.html func main() { boot := rkboot.NewBoot() // 注册 API entry := rkgin.GetGinEntry("greeter") entry.Router.GET("/v1/greeter", Greeter) // 启动 boot.Bootstrap(context.TODO()) // 等待关闭信号 boot.WaitForShutdownSig(context.TODO()) } // Greeter handler // @Summary Greeter // @Id 1 // @Tags Hello // @version 1.0 // @Param name query string true "name" // @produce application/json // @Success 200 {object} GreeterResponse // @Router /v1/greeter [get] func Greeter(ctx *gin.Context) { ctx.JSON(http.StatusOK, &GreeterResponse{ Message: fmt.Sprintf("Hello %s!", ctx.Query("name")), }) } type GreeterResponse struct { Message string } 2.2.3 生成api接口文档

swag init 2.2.4 运行服务

$ go run main.go 2022-04-14T01:09:52.073 0800 INFO boot/gin_entry.go:656 Bootstrap GinEntry {"eventId": "432fcdfb-05e8-46a4-b7b2-d6b6967eba88", "entryName": "greeter", "entryType": "GinEntry"} 2022-04-14T01:09:52.074 0800 INFO boot/gin_entry.go:413 SwaggerEntry: http://localhost:8080/sw/ 2022-04-14T01:09:52.074 0800 INFO boot/gin_entry.go:416 DocsEntry: http://localhost:8080/docs/ 2022-04-14T01:09:52.074 0800 INFO boot/gin_entry.go:419 PromEntry: http://localhost:8080/metrics ------------------------------------------------------------------------ endTime=2022-04-14T01:09:52.074233 08:00 startTime=2022-04-14T01:09:52.073337 08:00 elapsedNano=896392 timezone=CST ids={"eventId":"432fcdfb-05e8-46a4-b7b2-d6b6967eba88"} app={"appName":"rk","appVersion":"local","entryName":"greeter","entryType":"GinEntry"} env={"arch":"amd64","domain":"*","hostname":"lark.local","localIP":"192.168.101.5","os":"darwin"} payloads={"docsEnabled":true,"docsPath":"/docs/","ginPort":8080,"promEnabled":true,"promPath":"/metrics","promPort":8080,"swEnabled":true,"swPath":"/sw/"} counters={} pairs={} timing={} remoteAddr=localhost operation=Bootstrap resCode=OK eventStatus=Ended EOE 2.2.5 验证

$ curl -vs "localhost:8080/v1/greeter?name=rk-dev" * ... < X-Request-Id: 7120529c-893b-4caa-a425-bc268de5cbc0 < X-Rk-App-Domain: * < X-Rk-App-Name: rk < X-Rk-App-Unix-Time: 2022-04-15T03:37:22.848829 08:00 < X-Rk-App-Version: local < X-Rk-Received-Time: 2022-04-14T01:18:39.013447 08:00 < ... {"Message":"Hello rk-dev!"}

上述的过程直接可以参考官方文档进行详细的查看

3. 总结

本篇文章主要介绍了rk-boot 框架,并结合Gin框架进行了简单使用。下篇文章中,将会针对业务需求,进行代码的优化,针对如下几块进行实战:

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved