reqest

magic Go HTTP client,like k8s client-go

Get Started

install

You first need Go installed (version 1.17+ is required), then you can use the below Go command to install req:

go get -u github.com/crochee/reqest

Usage

Basic

import (
    "github.com/crochee/reqest"
)

var result struct{
		Content string `json:"content"`
	}

err := reqest.DefaultTransport.
	    Method(http.MethodGet).
		Prefix("v2").
		Param("flavor_types", "").
		Param("sys_volume_types", "SysVolumeTypes").
		Do(context.Background(), &result)

Multiple

client.go

import (
    "github.com/crochee/reqest"
)

type IClient interface {
    Area() AreaSrv
}

var iClient IClient

func SetClient(c IClient) {
    iClient = c
}

func NewClient() IClient {
    return iClient
}


func NewBaseClient() IClient {
return &baseClient{reqest.NewResource().Endpoint("http://localhost:80")}
}

type baseClient struct {
    reqest.Resource
}

func (c baseClient) Area() AreaSrv {
    return Area{c.Resource("areas")}
}

area.go

import (
    "log"
	
    "github.com/crochee/reqest"
)

type AreaSrv interface {
	List(ctx context.Context) error
}

type Area struct {
    reqest.Resource
}

func (a Area) List(ctx context.Context) error {
    var result interface{}
    if err := a.To().
        Get().
        Prefix("v2").
        Param("limit", "20").
        Param("offset", "0").
        Do(ctx, &result); err != nil {
        return err
    }
    log.Println(result)
    return nil
}

Contributing

If you have a bug report or feature request, you can open an issue.

GitHub

View Github