Skip to content

Commit

Permalink
Merge pull request #84 from dongxuny/master
Browse files Browse the repository at this point in the history
Bump up rk-entry version to v2.0.3
  • Loading branch information
dongxuny authored Mar 8, 2022
2 parents cc3fcca + cc0807f commit 9fd6af4
Show file tree
Hide file tree
Showing 12 changed files with 1,505 additions and 2 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ We will migrate dependencies from v1 to v2 as quick as possible.
| Web<br/> Framework | [gin-gonic/gin](https://github.com/gin-gonic/gin) || github.com/rookie-ninja/rk-gin/v2 | [example](example/web/gin) |
| | [gRPC](https://grpc.io/docs/languages/go/) || github.com/rookie-ninja/rk-grpc/v2 | [example](example/web/grpc) |
| | [labstack/echo](https://github.com/labstack/echo) || github.com/rookie-ninja/rk-echo | [example](example/web/echo) |
| | [gogf/gf](https://github.com/gogf/gf) | | | |
| | [gofiber/fiber](https://github.com/gofiber/fiber) | | | |
| | [gogf/gf](https://github.com/gogf/gf) | | github.com/rookie-ninja/rk-gf | [example](example/web/gf) |
| | [gofiber/fiber](https://github.com/gofiber/fiber) | | github.com/rookie-ninja/rk-fiber | [example](example/web/fiber) |
| | [zeromicro/go-zero](https://github.com/zeromicro/go-zero) || github.com/rookie-ninja/rk-zero | [example](example/web/zero) |
| | [gorilla/mux](https://github.com/gorilla/mux) || github.com/rookie-ninja/rk-mux | [example](example/web/mux) |
| Database<br/> ORM | [MySQL](https://github.com/rookie-ninja/rk-db/mysql) || github.com/rookie-ninja/rk-db/mysql | [example](example/database/mysql) |
Expand Down
23 changes: 23 additions & 0 deletions example/web/fiber/Makefile
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]"


134 changes: 134 additions & 0 deletions example/web/fiber/README.md
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)

Loading

0 comments on commit 9fd6af4

Please sign in to comment.