# rk-boot **Repository Path**: rookie-ninja/rk-boot ## Basic Information - **Project Name**: rk-boot - **Description**: Bootstrapper for golang application. See https:/rkdev.info for details. - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://rkdev.info - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2021-09-09 - **Last Updated**: 2022-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言, Swagger, bootstrapper, Grpc, Gin ## README

rk-boot

Build microservice with rk-boot and let the team take over clean and tidy code.

Medium Badge Docs Badge Docs Badge

## Concept rk-boot is a library which can manage backend service dependencies with YAML. Standardize, unify and simplify microservice is huge challenge when project are getting bigger. Build microservice with rk-boot and let the team take over clean and tidy code. ![image](docs/img/boot-arch.png) ## Quick Start We will start [gin-gonic/gin](https://github.com/gin-gonic/gin) server with rk-boot. ### Install ```shell go get github.com/rookie-ninja/rk-boot/v2 go get github.com/rookie-ninja/rk-gin/v2 ``` ### Code

boot.yaml ```yaml --- gin: - name: greeter # Required port: 8080 # Required enabled: true # Required sw: enabled: true # Optional, default: false ```
main.go ```go // Copyright (c) 2021 rookie-ninja // // Use of this source code is governed by an Apache-style // license that can be found in the LICENSE file. 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() { // Create a new boot instance. boot := rkboot.NewBoot() // Register handler entry := rkgin.GetGinEntry("greeter") entry.Router.GET("/v1/greeter", Greeter) // Bootstrap 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 } ```
### Validate
Check API ```shell script $ go run main.go $ curl -X GET localhost:8080/v1/greeter?name=rk-dev {"Message":"Hello rk-dev!"} $ curl -X GET localhost:8080/rk/v1/ready { "ready": true } $ curl -X GET localhost:8080/rk/v1/alive { "alive": true } ```
Check Swagger UI Swagger UI: [http://localhost:8080/sw](http://localhost:8080/sw) ![image](example/web/gin/docs/img/simple-sw.png)
## Supported plugins
## Development Status: Stable ## Build instruction Simply run make all to validate your changes. Or run codes in example/ folder. - make all If proto or files in boot/assets were modified, then we need to run it. ## Test instruction Run unit test with **make test** command. github workflow will automatically run unit test and golangci-lint for testing and lint validation. ## Contributing We encourage and support an active, healthy community of contributors — including you! Details are in the [contribution guide](CONTRIBUTING.md) and the [code of conduct](CODE_OF_CONDUCT.md). The rk maintainers keep an eye on issues and pull requests, but you can also report any negative conduct to lark@rkdev.info. Released under the [Apache 2.0 License](LICENSE). ## Join discussing channel | Channel | Code | |-------------------------|--------------------------------------------------| | Wechat group (Chinese) | ![image](docs/img/wechat-group-cn.png) | | Slack channel (English) | [#rk-boot](https://rk-syz1767.slack.com/) | ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=rookie-ninja/rk-boot&type=Date)](https://star-history.com/#rookie-ninja/rk-boot&Date)