通过rk快速搭建golang的Restful api服务

一. RK介绍

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

Githubhttps://github.com/rookie-ninja/rk-boot

RK官网https://rkdev.info/cn

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

通过rk快速搭建golang的Restful api服务

三. 结束 

至此简单的restful服务搭建完毕。rk还有很多特性,大家可以看下官网Github。大家有什么问题直接可以留言,或者到GitHub rk-boot项目留issue。

谢谢。

上一篇:彻底解决Ubuntu中 “检测到系统程序错误”


下一篇:报错:| cinder-volume | compute02@lvm | nova | enabled | down | 2021-02-15T08:11:32.000000 |