一. RK介绍
RK(全称Rookie)是PointGoal开源的golang框架。可以方便搭建生产级别restful和grpc服务。
Github:https://github.com/rookie-ninja/rk-boot
RK Demo代码:https://github.com/rookie-ninja/rk-demo/tree/master/gin/basic
二. Demo
这次我用rk搭建一个简单的restful服务。
1. 创建Go项目
mkdir rk-hello
cd rk-hello
go mod init rk-hello
2. 安装rk-boot
go get -u github.com/rookie-ninja/rk-boot
3. 创建boot.yaml文件
gin:
- name: greeter
port: 8080
sw:
enabled: false
jsonPath: "docs"
commonService:
enabled: true
tv:
enabled: true
prom:
enabled: false
interceptors:
loggingZap:
enabled: true
metricsProm:
enabled: true
meta:
enabled: true
4.创建main.go
package main
import (
"context"
"fmt"
"github.com/gin-gonic/gin"
"github.com/rookie-ninja/rk-boot"
"net/http"
)
// @title RK Swagger for Gin
// @version 1.0
// @description This is a greeter service with rk-boot.
// Application entrance.
func main() {
// Create a new boot instance.
boot := rkboot.NewBoot()
// Register handler
boot.GetGinEntry("greeter").Router.GET("/v1/greeter", Greeter)
// Bootstrap
boot.Bootstrap(context.Background())
// Wait for shutdown sig
boot.WaitForShutdownSig(context.Background())
}
// Greeter @Summary Greeter service
// @Id 1
// @version 1.0
// @produce application/json
// @Param name query string true "Input name"
// @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")),
})
}
// GreeterResponse response
type GreeterResponse struct {
Message string
}
5. 运行
go run main.go
6. 查看刚启动的服务的状态
可以通过自带的rk-tv组件查看:http://localhost:8080/rk/v1/tv/info
三. 结束
至此简单的restful服务搭建完毕。rk还有很多特性,大家可以看下官网和Github。大家有什么问题直接可以留言,或者到GitHub rk-boot项目留issue。
谢谢。