我们进今天开始,构建项目
一:我们先将项目的初始架构,搞起来
如上图所示,先创建一些空的go文件,文件名可以随便起,但是文件夹的名字最好先用这么写,因为一开始自己对kit的不是完全理解,包名在此还有一定的提示作用
二: 我们先从最基本的service开始构建
codeService.go
import "fmt"
type User struct {
}
func (u *User) GetUserName(uid int) string {
fmt.Println("接收到前端传来的参数:",uid)
return "hello git"
}
先来一个最简单的
三:在完善endpoint层
import (
"context"
"errors"
"github.com/go-kit/kit/endpoint"
myMux "github.com/gorilla/mux"
"goKit/service"
"net/http"
)
func GenVcEndpoint() endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (response interface{}, err error){
r := request.(*http.Request)
vars := myMux.Vars(r)
if uid, ok := vars["uid"]; ok {
user := service.User{}
return user.GetUserName(uid),nil
}
return nil,errors.New("出错了")
}
}
注意:我们在此使用的是gorilla/mux 作为路由
四:我们继续,完善transport层
import (
"context"
"encoding/json"
"net/http"
)
func DecodeVcRequest(_ context.Context, r *http.Request) (interface{}, error) {
return r, nil
}
func EncodeVcResponse(_ context.Context, w http.ResponseWriter, response interface{}) error {
return json.NewEncoder(w).Encode(response)
}
注:在此,我们是用最简单明了的方式,定义入参解析以及出参定义 - 就是什么也不操作,但是kit框架需要
五:那现在,我们在main函数中,将服务启动起来
import (
goKitHttp "github.com/go-kit/kit/transport/http"
"github.com/gorilla/mux"
. "goKit/endpoint"
. "goKit/transport"
"net/http"
"os"
)
func main() {
r := mux.NewRouter()
getCode := goKitHttp.NewServer(GenVcEndpoint(),
DecodeVcRequest, EncodeVcResponse,)
r.Methods("Get").Path(`/getName/{uid:\d+}`).Handler(getCode)
err :=http.ListenAndServe(":9090", r)
if err != nil{
os.Exit(-1)
}
}
注:最简单直接的配置,将服务启动
六: 测试
浏览器请求,以及返回值
后台输出:
七:到此,我们kit的基础架构就完成了,剩下的就是一点点的去继续完善了