Skip to content
/ querystring Public template

QueryString is a Go library for converting a struct or a map into URL values, with support for custom encoders, time formatting, and handling of different data types.

License

Notifications You must be signed in to change notification settings

FPbear/querystring

Repository files navigation

QueryString

QueryString is a Go library for converting a struct or a map into URL values, with support for custom encoders, time formatting, and handling of different data types.

Installation

Use the package manager go get to install QueryString.

go get github.com/FPbear/querystring

Usage

Example

import "github.com/FPbear/querystring"

type Input struct {
    Hello string     `url:"hello"`
    Foo   string     `url:"foo,omitempty"`
    Empty string     `url:"empty"`
}

func main() {
    input := Input{
        Hello: "world",
        Foo:   "",
        Empty: "",
    }

    values, err := querystring.Values(input)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(values.Encode())
    // Output: hello=world&empty=
}

You can also customize the encoder, for example:

import "github.com/FPbear/querystring"

type subEncode struct {
	Hello string `form:"hello"`
	World string `form:"world"`
}

func (s *subEncode) Encode() ([]string, error) {
	return []string{s.Hello + "-" + s.World}, nil
}

type Input struct {
    Hello string     `form:"hello"`
    Foo   string     `form:"foo,omitempty"`
    Empty string     `form:"empty"`
    Sub   *subEncode `form:"sub,omitempty"`
}

func main() {
    input := Input{
        Hello: "world",
        Foo:   "",
        Empty: "",
        Sub: &subEncode{
            Hello: "hello",
            World: "world",
        },
    }

    con := NewConverter(NewTag(WithTag("form")))
    values, err := con.Values(input)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(values.Encode())
    // Output: hello=world&empty=&sub=hello-world
}

About

QueryString is a Go library for converting a struct or a map into URL values, with support for custom encoders, time formatting, and handling of different data types.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages