migmig icon indicating copy to clipboard operation
migmig copied to clipboard

Simple HTTP Client for Golang

MigMig

Simple HTTP Client for Golang

Features

  • Get/Post/Put/Head/Delete/Patch/Options
  • Clean and Minimal API
  • Set Request Headers
  • Set URL Query Parameters
  • JSON Request Body
  • Creating an Instance with Default Config

Usage

Install MigMig using go get

$ go get github.com/majidsajadi/migmig

Import MigMig into your code and refer it as migmig.

import "github.com/majidsajadi/migmig"

Get Request

Simple get request

client := migmig.New()

resp, err := client.Get("https://httpbin.org/get", nil)
if err != nil {
    panic(err)
}
defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    panic(err)
}

fmt.Println(string(body))

Post Request

Simple post request with headers and JSON body

resp, err := migmig.New().Post("https://httpbin.org/post", &migmig.Config{
    Headers: map[string]string{
        "Content-Type": "application/json",
    },
    Body: map[string]interface{} {
        "foo": "bar",
    },
})

Creating an Instance

You can create a migmig instance with default config

client := migmig.Create(migmig.Config{
    BaseURL: "https://api.github.com",
    Headers: map[string]string{
        "accept": "application/vnd.github.v3+json",
    },
})

resp, err := client.Get("/users",
    &migmig.Config{
        QueryParams: map[string]string{
            "per_page": "25",
            "since":    "300",
        },
    })
if err != nil {
    panic(err)
}
defer resp.Body.Close()

users, err := ioutil.ReadAll(resp.Body)
if err != nil {
    panic(err)
}

fmt.Println(string(users))

resp, err = client.Get("/users/majidsajadi/repos",
    &migmig.Config{
        QueryParams: map[string]string{
            "per_page": "25",
        },
    })
if err != nil {
    panic(err)
}
defer resp.Body.Close()

repos, err := ioutil.ReadAll(resp.Body)
if err != nil {
    panic(err)
}

fmt.Println(string(repos))

Query Parameter

resp, err := migmig.New().Get("https://httpbin.org/get", &migmig.Config{
    QueryParams: map[string]string{
        "foo": "bar",
    },
})

Request Header

resp, err := migmig.New().Post("https://httpbin.org/post", &migmig.Config{
    Headers: map[string]string {
        "foo": "bar",
    },
})

Delete Request

resp, err := migmig.New().Delete("https://httpbin.org/delete", nil)

Put Request


resp, err := migmig.New().Put("https://httpbin.org/put", &migmig.Config{
    Body: map[string]interface{} {
        "foo": "bar",
    },
})

Patch Request

resp, err := migmig.New().Patch("https://httpbin.org/patch", &migmig.Config{
    Body: map[string]interface{} {
        "foo": "bar",
    },
})

Contirbuting

Any contribution, pull requests, issue and feedbacks would be greatly appreciated. If you have any idea about the MigMig, such as, feature requests, refactoring, API changes, etc, feel free to open an issue.

License

MigMig is open source software licensed as MIT.