用rk框架快速搭建基于Go语言Restful服务

712 阅读1分钟

一. RK介绍

RK(全称Rookie)是开源的Go语言(golang)框架。可以方便搭建生产级别restful和grpc服务。

Githubgithub.com/rookie-ninj…

RK官网rkdev.info/cn

RK Demo代码github.com/rookie-ninj…

二. Demo

这次我用rk搭建一个简单的restful服务。

1. 创建Go项目

mkdir rk-hello
cd rk-hello
go mod init rk-hello

2. 安装rk-boot

go get 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

27000736-1f49d8beb99d551f.webp

三. 结束

至此简单的restful服务搭建完毕。rk还有很多功能,如支持swagger, promtheus等,可以查阅官网Github。大家有什么问题直接可以留言,或者到GitHub rk-boot项目留issue。

谢谢