zoukankan      html  css  js  c++  java
  • 1.基础入门

    第一步创建UserService

    package Services
    
    type IUserService interface {
        GetName(userid int) string
    }
    
    type UserService struct{}
    
    func (this UserService) GetName(userid int) string {
        if userid == 101 {
            return "jerry"
        }
        return "guest"
    }
    

    第二部:创建UserEndPoint

    package Services
    
    import (
        "context"
        "github.com/go-kit/kit/endpoint"
    )
    
    type UserRequest struct { //封装User请求结构体
        Uid int `json:"uid"`
    }
    
    type UserResponse struct {
        Result string `json:"result"`
    }
    
    func GenUserEnPoint(userService IUserService) endpoint.Endpoint {
        return func(ctx context.Context, request interface{}) (response interface{}, err error) {
            r := request.(UserRequest)           //通过类型断言获取请求结构体
            result := userService.GetName(r.Uid) //
            return UserResponse{Result: result}, nil
        }
    }
    

    第三部:创建Transport

    创建UserTransport

    package Services
    
    import (
        "context"
        "encoding/json"
        "errors"
        "net/http"
        "strconv"
    )
    
    func DecodeUserRequest(c context.Context, r *http.Request) (interface{}, error) { //这个函数决定了使用哪个request结构体来请求
        if r.URL.Query().Get("uid") != "" {
            uid, _ := strconv.Atoi(r.URL.Query().Get("uid"))
            return UserRequest{Uid: uid}, nil
        }
        return nil,errors.New("参数错误")/
    }
    
    func EncodeUserResponse(ctx context.Context,w http.ResponseWriter,response interface{}) error{
        w.Header().Set("Content-type","application/json") //设置响应格式为json,这样客户端接收到的值就是json,就是把我们设置的UserResponse给json化了
    
        return json.NewEncoder(w).Encode(response)//判断响应格式是否正确
    }

    一般是三层架构三个文件夹,我这里演示方便把三层的东西都放到了一个中





  • 相关阅读:
    查漏补缺:QT入门
    添砖加瓦:设计模式(工厂方法模式)
    Luogu 4784 [BalticOI 2016 Day2]城市
    Luogu 1606 [USACO07FEB]白银莲花池Lilypad Pond
    Luogu 3698 [CQOI2017]小Q的棋盘
    CF547D Mike and Fish
    Luogu 3066 [USACO12DEC]逃跑的BarnRunning Away From…
    Luogu 2403 [SDOI2010]所驼门王的宝藏
    NEERC17 J Journey from Petersburg to Moscow
    Luogu 3350 [ZJOI2016]旅行者
  • 原文地址:https://www.cnblogs.com/hualou/p/12076155.html
Copyright © 2011-2022 走看看