-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #84 from dongxuny/master
Bump up rk-entry version to v2.0.3
- Loading branch information
Showing
12 changed files
with
1,505 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
.PHONY: all | ||
all: lint fmt swag | ||
|
||
.PHONY: lint | ||
lint: | ||
@echo "[golangci-lint] Running golangci-lint..." | ||
@golangci-lint run 2>&1 | ||
@echo "------------------------------------[Done]" | ||
|
||
.PHONY: fmt | ||
fmt: | ||
@echo "[fmt] Format go project..." | ||
@gofmt -s -w . 2>&1 | ||
@echo "------------------------------------[Done]" | ||
|
||
.PHONY: swag | ||
swag: | ||
@echo "[swag] Running swag..." | ||
@swag init --generalInfo main.go --propertyStrategy camelcase | ||
@rm -rf docs/docs.go | ||
@echo "------------------------------------[Done]" | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
# Example | ||
Middleware & bootstrapper designed for [gofiber/fiber](https://github.com/gofiber/fiber) web framework. | ||
|
||
## Documentation | ||
- [Github](https://github.com/rookie-ninja/rk-gin) | ||
- [Official Docs]() will be updated for v2 soon | ||
|
||
![image](docs/img/fiber-arch.png) | ||
|
||
## Installation | ||
- rk-boot: Bootstrapper base | ||
- rk-fiber: Bootstrapper for [gofiber/fiber](https://github.com/gofiber/fiber) | ||
|
||
```shell | ||
go get github.com/rookie-ninja/rk-boot/v2 | ||
go get github.com/rookie-ninja/rk-fiber | ||
``` | ||
|
||
## Quick start | ||
### 1.Create boot.yaml | ||
```yaml | ||
--- | ||
fiber: | ||
- name: greeter # Required | ||
port: 8080 # Required | ||
enabled: true # Required | ||
commonService: | ||
enabled: true # Optional, default: false | ||
sw: | ||
enabled: true # Optional, default: false | ||
docs: | ||
enabled: true # Optional, default: false | ||
``` | ||
### 2.Create 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/gofiber/fiber/v2" | ||
"github.com/rookie-ninja/rk-boot/v2" | ||
"github.com/rookie-ninja/rk-fiber/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 [email protected] | ||
|
||
// @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() | ||
|
||
// Bootstrap | ||
boot.Bootstrap(context.TODO()) | ||
|
||
// Register handler | ||
entry := rkfiber.GetFiberEntry("greeter") | ||
entry.App.Get("/v1/greeter", Greeter) | ||
// This is required!!! | ||
entry.RefreshFiberRoutes() | ||
|
||
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 *fiber.Ctx) error { | ||
ctx.Response().SetStatusCode(http.StatusOK) | ||
return ctx.JSON(&GreeterResponse{ | ||
Message: fmt.Sprintf("Hello %s!", ctx.Query("name")), | ||
}) | ||
} | ||
|
||
type GreeterResponse struct { | ||
Message string | ||
} | ||
``` | ||
|
||
### 3.Start server | ||
|
||
```go | ||
$ go run main.go | ||
``` | ||
|
||
### 4.Validation | ||
- Call API: | ||
|
||
```shell script | ||
$ 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 | ||
} | ||
``` | ||
|
||
- Swagger UI: [http://localhost:8080/sw](http://localhost:8080/sw) | ||
|
||
![image](docs/img/simple-sw.png) | ||
|
||
- Docs UI via: [http://localhost:8080/docs](http://localhost:8080/docs) | ||
|
||
![image](docs/img/simple-docs.png) | ||
|
Oops, something went wrong.