{"id":21420074,"url":"https://github.com/kirinlabs/httprequest","last_synced_at":"2026-01-12T06:37:57.691Z","repository":{"id":50325305,"uuid":"132875901","full_name":"kirinlabs/HttpRequest","owner":"kirinlabs","description":"Simplified HTTP client, A simplie golang HTTP client library.","archived":false,"fork":false,"pushed_at":"2024-04-16T10:30:31.000Z","size":93,"stargazers_count":177,"open_issues_count":12,"forks_count":49,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-29T17:11:42.727Z","etag":null,"topics":["curl","go","http","httprequest","request"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kirinlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-10T09:05:19.000Z","updated_at":"2025-03-15T23:20:42.000Z","dependencies_parsed_at":"2024-11-23T01:00:34.391Z","dependency_job_id":null,"html_url":"https://github.com/kirinlabs/HttpRequest","commit_stats":{"total_commits":108,"total_committers":4,"mean_commits":27.0,"dds":0.4537037037037037,"last_synced_commit":"432628e833bda77cc426fc1bee9825a13f6b4df1"},"previous_names":["iceview/httprequest"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirinlabs%2FHttpRequest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirinlabs%2FHttpRequest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirinlabs%2FHttpRequest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kirinlabs%2FHttpRequest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kirinlabs","download_url":"https://codeload.github.com/kirinlabs/HttpRequest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247378149,"owners_count":20929297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["curl","go","http","httprequest","request"],"created_at":"2024-11-22T20:11:14.440Z","updated_at":"2026-01-12T06:37:57.684Z","avatar_url":"https://github.com/kirinlabs.png","language":"Go","readme":"HttpRequest\n=======\nA simple `HTTP Request` package for golang. `GET` `POST` `DELETE` `PUT`\n\n\n\n### Installation\ngo get github.com/kirinlabs/HttpRequest\n\n\n### How do we use HttpRequest?\n\n#### Create request object use http.DefaultTransport\n```go\nresp, err := HttpRequest.Get(\"http://127.0.0.1:8000\")\nresp, err := HttpRequest.SetTimeout(5).Get(\"http://127.0.0.1:8000\")\nresp, err := HttpRequest.Debug(true).SetHeaders(map[string]string{}).Get(\"http://127.0.0.1:8000\")\n\nOR\n\nreq := HttpRequest.NewRequest()\nreq := HttpRequest.NewRequest().Debug(true).SetTimeout(5*time.Second)\nresp, err := req.Get(\"http://127.0.0.1:8000\")\nresp, err := req.Get(\"http://127.0.0.1:8000\",nil)\nresp, err := req.Get(\"http://127.0.0.1:8000?id=10\u0026title=HttpRequest\")\nresp, err := req.Get(\"http://127.0.0.1:8000?id=10\u0026title=HttpRequest\",\"address=beijing\")\n\n```\n\n#### Set headers\n```go\nreq.SetHeaders(map[string]string{\n    \"Content-Type\": \"application/x-www-form-urlencoded\",\n    \"Connection\": \"keep-alive\",\n})\n\nreq.SetHeaders(map[string]string{\n    \"Source\":\"api\",\n})\n```\n\n#### Set cookies\n```go\nreq.SetCookies(map[string]string{\n    \"name\":\"json\",\n    \"token\":\"\",\n})\n\nOR\n\nHttpRequest.SetCookies(map[string]string{\n    \"age\":\"19\",\n}).Post()\n```\n\n#### Set basic auth\n```go\nreq.SetBasicAuth(\"username\",\"password\")\n```\n\n#### Set timeout\n```go\nreq.SetTimeout(5)  //default 30s\n```\n\n#### Transport\nIf you want to customize the Client object and reuse TCP connections, you need to define a global http.RoundTripper or \u0026 http.Transport, because the reuse of the http connection pool is based on Transport.\n```go\nvar transport *http.Transport\nfunc init() {   \n    transport = \u0026http.Transport{\n        DialContext: (\u0026net.Dialer{\n            Timeout:   30 * time.Second,\n            KeepAlive: 30 * time.Second,\n            DualStack: true,\n        }).DialContext,\n        MaxIdleConns:          100, \n        IdleConnTimeout:       90 * time.Second,\n        TLSHandshakeTimeout:   5 * time.Second,\n        ExpectContinueTimeout: 1 * time.Second,\n    }\n}\n\nfunc demo(){\n    // Use http.DefaultTransport\n    res, err := HttpRequest.Get(\"http://127.0.0.1:8080\")\n    // Use custom Transport\n    res, err := HttpRequest.Transport(transport).Get(\"http://127.0.0.1:8080\")\n}\n```\n\n#### Keep Alives，Only effective for custom Transport\n```go\nreq.DisableKeepAlives(false)\n\nHttpRequest.Transport(transport).DisableKeepAlives(false).Get(\"http://127.0.0.1:8080\")\n```\n\n#### Ignore Https certificate validation，Only effective for custom Transport\n```go\nreq.SetTLSClient(\u0026tls.Config{InsecureSkipVerify: true})\n\nHttpRequest.Transport(transport).SetTLSClient(\u0026tls.Config{InsecureSkipVerify: true}).Get(\"http://127.0.0.1:8080\")\n```\n\n#### Object-oriented operation mode\n```go\nreq := HttpRequest.NewRequest().\n\tDebug(true).\n\tSetHeaders(map[string]string{\n\t    \"Content-Type\": \"application/x-www-form-urlencoded\",\n\t}).SetTimeout(5)\nresp,err := req.Get(\"http://127.0.0.1\")\n\nresp,err := HttpRequest.NewRequest().Get(\"http://127.0.0.1\")\n```\n\n### GET\n\n#### Query parameter\n```go\nresp, err := req.Get(\"http://127.0.0.1:8000\")\nresp, err := req.Get(\"http://127.0.0.1:8000\",nil)\nresp, err := req.Get(\"http://127.0.0.1:8000?id=10\u0026title=HttpRequest\")\nresp, err := req.Get(\"http://127.0.0.1:8000?id=10\u0026title=HttpRequest\",\"address=beijing\")\n\nOR\n\nresp, err := HttpRequest.Get(\"http://127.0.0.1:8000\")\nresp, err := HttpRequest.Debug(true).SetHeaders(map[string]string{}).Get(\"http://127.0.0.1:8000\")\n```\n\n\n#### Multi parameter\n```go\nresp, err := req.Get(\"http://127.0.0.1:8000?id=10\u0026title=HttpRequest\",map[string]interface{}{\n    \"name\":  \"jason\",\n    \"score\": 100,\n})\ndefer resp.Close()\n\nbody, err := resp.Body()\nif err != nil {\n    return\n}\n\nreturn string(body)\n```\n\n\n### POST\n\n```go\n// Send nil\nresp, err := HttpRequest.Post(\"http://127.0.0.1:8000\")\n\n// Send integer\nresp, err := HttpRequest.Post(\"http://127.0.0.1:8000\", 100)\n\n// Send []byte\nresp, err := HttpRequest.Post(\"http://127.0.0.1:8000\", []byte(\"bytes data\"))\n\n// Send io.Reader\nresp, err := HttpRequest.Post(\"http://127.0.0.1:8000\", bytes.NewReader(buf []byte))\nresp, err := HttpRequest.Post(\"http://127.0.0.1:8000\", strings.NewReader(\"string data\"))\nresp, err := HttpRequest.Post(\"http://127.0.0.1:8000\", bytes.NewBuffer(buf []byte))\n\n// Send string\nresp, err := HttpRequest.Post(\"http://127.0.0.1:8000\", \"title=github\u0026type=1\")\n\n// Send JSON\nresp, err := HttpRequest.JSON().Post(\"http://127.0.0.1:8000\", \"{\\\"id\\\":10,\\\"title\\\":\\\"HttpRequest\\\"}\")\n\n// Send map[string]interface{}{}\nresp, err := req.Post(\"http://127.0.0.1:8000\", map[string]interface{}{\n    \"id\":    10,\n    \"title\": \"HttpRequest\",\n})\ndefer resp.Close()\n\nbody, err := resp.Body()\nif err != nil {\n    return\n}\nreturn string(body)\n\nresp, err := HttpRequest.Post(\"http://127.0.0.1:8000\")\nresp, err := HttpRequest.JSON().Post(\"http://127.0.0.1:8000\",map[string]interface{}{\"title\":\"github\"})\nresp, err := HttpRequest.Debug(true).SetHeaders(map[string]string{}).JSON().Post(\"http://127.0.0.1:8000\",\"{\\\"title\\\":\\\"github\\\"}\")\n```\n\n### Jar\n```go\nj, _ := cookiejar.New(nil)\nj.SetCookies(\u0026url.URL{\n\tScheme: \"http\",\n\tHost:   \"127.0.0.1:8000\",\n}, []*http.Cookie{\n\t\u0026http.Cookie{Name: \"identity-user\", Value: \"83df5154d0ed31d166f5c54ddc\"},\n\t\u0026http.Cookie{Name: \"token_id\", Value: \"JSb99d0e7d809610186813583b4f802a37b99d\"},\n})\nresp, err := HttpRequest.Jar(j).Get(\"http://127.0.0.1:8000/city/list\")\ndefer resp.Close()\n\nif err != nil {\n\tlog.Fatalf(\"Request error：%v\", err.Error())\n}\n```\n\n### Proxy\n```go\nproxy, err := url.Parse(\"http://proxyip:proxyport\")\nif err != nil {\n\tlog.Println(err)\n}\n\nresp, err := HttpRequest.Proxy(http.ProxyURL(proxy)).Get(\"http://127.0.0.1:8000/ip\")\ndefer resp.Close()\n\nif err != nil {\n\tlog.Println(\"Request error：%v\", err.Error())\n}\n\nbody, err := resp.Body()\nif err != nil {\n\tlog.Println(\"Get body error：%v\", err.Error())\n}\nlog.Println(string(body))\n```\n\n### Upload\nParams: url, filename, fileinput\n\n```go\nresp, err := req.Upload(\"http://127.0.0.1:8000/upload\", \"/root/demo.txt\",\"uploadFile\")\nbody, err := resp.Body()\ndefer resp.Close()\nif err != nil {\n    return\n}\nreturn string(body)\n```\n\n\n### Debug\n#### Default false\n\n```go\nreq.Debug(true)\n```\n\n#### Print in standard output：\n```go\n[HttpRequest]\n-------------------------------------------------------------------\nRequest: GET http://127.0.0.1:8000?name=iceview\u0026age=19\u0026score=100\nHeaders: map[Content-Type:application/x-www-form-urlencoded]\nCookies: map[]\nTimeout: 30s\nReqBody: map[age:19 score:100]\n-------------------------------------------------------------------\n```\n\n\n## Json\nPost JSON request\n\n#### Set header\n```go\n req.SetHeaders(map[string]string{\"Content-Type\": \"application/json\"})\n```\nOr\n```go\nreq.JSON().Post(\"http://127.0.0.1:8000\", map[string]interface{}{\n    \"id\":    10,\n    \"title\": \"github\",\n})\n\nreq.JSON().Post(\"http://127.0.0.1:8000\", \"{\\\"title\\\":\\\"github\\\",\\\"id\\\":10}\")\n```\n\n#### Post request\n```go\nresp, err := req.Post(\"http://127.0.0.1:8000\", map[string]interface{}{\n    \"id\":    10,\n    \"title\": \"HttpRequest\",\n})\n```\n\n#### Print formatted JSON\n```go\nstr, err := resp.Export()\nif err != nil {\n   return\n}\n```\n\n#### Unmarshal JSON\n```go\nvar u User\nerr := resp.Json(\u0026u)\nif err != nil {\n   return err\n}\n\nvar m map[string]interface{}\nerr := resp.Json(\u0026m)\nif err != nil {\n   return err\n}\n```\n\n### Response\n\n#### Response() *http.Response\n```go\nresp, err := req.Post(\"http://127.0.0.1:8000/\") //res is a http.Response object\n```\n\n#### StatusCode() int\n```go\nresp.StatusCode()\n```\n\n#### Body() ([]byte, error)\n```go\nbody, err := resp.Body()\nlog.Println(string(body))\n```\n\n#### Close() error\n```go\nresp.Close()\n```\n\n#### Time() string\n```go\nresp.Time()  //ms\n```\n\n#### Print formatted JSON\n```go\nstr, err := resp.Export()\nif err != nil {\n   return\n}\n```\n\n#### Unmarshal JSON\n```go\nvar u User\nerr := resp.Json(\u0026u)\nif err != nil {\n   return err\n}\n\nvar m map[string]interface{}\nerr := resp.Json(\u0026m)\nif err != nil {\n   return err\n}\n```\n\n#### Url() string\n```go\nresp.Url()  //return the requested url\n```\n\n#### Headers() http.Header\n```go\nresp.Headers()  //return the response headers\nresp.Headers().Get(\"Content-Type\")\n```\n\n#### Cookies() []*http.Cookie\n```go\nresp.Cookies()  //return the response cookies\n```\n\n### Advanced\n#### GET\n```go\nimport \"github.com/kirinlabs/HttpRequest\"\n   \nresp,err := HttpRequest.Get(\"http://127.0.0.1:8000/\")\nresp,err := HttpRequest.Get(\"http://127.0.0.1:8000/\",\"title=github\")\nresp,err := HttpRequest.Get(\"http://127.0.0.1:8000/?title=github\")\nresp,err := HttpRequest.Debug(true).JSON().Get(\"http://127.0.0.1:8000/\")\n```\n\n#### POST\n```go\nimport \"github.com/kirinlabs/HttpRequest\"\n   \nresp,err := HttpRequest.Post(\"http://127.0.0.1:8000/\")\nresp,err := HttpRequest.SetHeaders(map[string]string{\n\t\"title\":\"github\",\n}).Post(\"http://127.0.0.1:8000/\")\nresp,err := HttpRequest.Debug(true).JSON().Post(\"http://127.0.0.1:8000/\")\n```\n\n\n### Example\n```go\nimport \"github.com/kirinlabs/HttpRequest\"\n   \nresp,err := HttpRequest.Get(\"http://127.0.0.1:8000/\")\nresp,err := HttpRequest.Get(\"http://127.0.0.1:8000/\",\"title=github\")\nresp,err := HttpRequest.Get(\"http://127.0.0.1:8000/?title=github\")\nresp,err := HttpRequest.Get(\"http://127.0.0.1:8000/\",map[string]interface{}{\n\t\"title\":\"github\",\n})\nresp,err := HttpRequest.Debug(true).JSON().SetHeaders(map[string]string{\n\t\"source\":\"api\",\n}).SetCookies(map[string]string{\n\t\"name\":\"httprequest\",\n}).Post(\"http://127.0.0.1:8000/\")\n\n\n//Or\nreq := HttpRequest.NewRequest()\nreq := req.Debug(true).SetHeaders()\nresp,err := req.Debug(true).JSON().SetHeaders(map[string]string{\n    \"source\":\"api\",\n}).SetCookies(map[string]string{\n    \"name\":\"httprequest\",\n}).Post(\"http://127.0.0.1:8000/\")\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkirinlabs%2Fhttprequest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkirinlabs%2Fhttprequest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkirinlabs%2Fhttprequest/lists"}