go-httpheader:将 struct 转换为 http.Header

    最近在开发 go-cos 时, 因为 cos API 的很多可选参数都是放在 header 中, 所以开发了一个将 struct 转换为 http.Header 的包。

    项目地址: https://github.com/mozillazg/go-httpheader

    示例:

    package main
    
    import (
        "fmt"
        "net/http"
    
        "github.com/mozillazg/go-httpheader"
    )
    
    type Options struct {
        hide         string
        ContentType  string `header:"Content-Type"`
        Length       int
        XArray       []string `header:"X-Array"`
        TestHide     string   `header:"-"`
        IgnoreEmpty  string   `header:"X-Empty,omitempty"`
        IgnoreEmptyN string   `header:"X-Empty-N,omitempty"`
        CustomHeader http.Header
    }
    
    func main() {
        opt := Options{
            hide:         "hide",
            ContentType:  "application/json",
            Length:       2,
            XArray:       []string{"test1", "test2"},
            TestHide:     "hide",
            IgnoreEmptyN: "n",
            CustomHeader: http.Header{
                "X-Test-1": []string{"233"},
                "X-Test-2": []string{"666"},
            },
        }
        h, _ := httpheader.Header(opt)
        // h:
        // http.Header{
        //      "X-Test-1":     []string{"233"},
        //      "X-Test-2":     []string{"666"},
        //      "Content-Type": []string{"application/json"},
        //      "Length":       []string{"2"},
        //      "X-Array":      []string{"test1", "test2"},
        //      "X-Empty-N":    []string{"n"},
        //}
    }
    

    更多信息详见项目文档:https://godoc.org/github.com/mozillazg/go-httpheader

    希望能对有同样需求的人有所帮助。


    Comments