{"id":13462130,"url":"https://github.com/bradfitz/exp-httpclient","last_synced_at":"2025-04-05T22:10:31.362Z","repository":{"id":41329931,"uuid":"148183534","full_name":"bradfitz/exp-httpclient","owner":"bradfitz","description":"experimental new HTTP client API for #golang (WIP)","archived":false,"fork":false,"pushed_at":"2019-01-01T18:36:05.000Z","size":19,"stargazers_count":583,"open_issues_count":1,"forks_count":13,"subscribers_count":54,"default_branch":"master","last_synced_at":"2025-03-29T21:09:02.967Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bradfitz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-10T16:14:09.000Z","updated_at":"2025-03-11T10:51:49.000Z","dependencies_parsed_at":"2022-08-31T11:03:23.514Z","dependency_job_id":null,"html_url":"https://github.com/bradfitz/exp-httpclient","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradfitz%2Fexp-httpclient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradfitz%2Fexp-httpclient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradfitz%2Fexp-httpclient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradfitz%2Fexp-httpclient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradfitz","download_url":"https://codeload.github.com/bradfitz/exp-httpclient/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247406111,"owners_count":20933806,"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":[],"created_at":"2024-07-31T12:00:39.568Z","updated_at":"2025-04-05T22:10:31.337Z","avatar_url":"https://github.com/bradfitz.png","language":"Go","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# Rethinking Go's HTTP client\n\nThis repository explores redesigning the API for\nthe [Go language](https://golang.org/)'s\n[`net/http`](https://golang.org/pkg/net/http/)\n[`Client`](https://golang.org/pkg/net/http/#Client) and \n[`Transport`](https://golang.org/pkg/net/http/#Transport).\n\nInitially, though, it collects problems with the current API. The\nactual solution has not yet been designed.\n\n# FAQ\n\n## What's wrong with Go's HTTP client?\n\nSee the [list of problems](problems.md).\n\nOr see the [overview presentation](https://docs.google.com/presentation/d/e/2PACX-1vTTFQjMSxai7TvhBJgkJf4K3RrT3tJrP7KUQ3rZB8e4UL7grCnxQh7o4yYYvyYugnkcfVwvTrwA23B0/pub?start=false\u0026loop=false\u0026delayms=3000) for the problems in a different format.\n\n## What about the Server?\n\nThis repo does not aim to address the server side of the `net/http`\npackage. The server half is in better shape than the client, and it's\nalso easier to fix the client half without fragmenting the\necosystem. Changing the Server interface needs to be done much more\ncarefully.\n\nBut even long term, it's almost certainly best for the client and server to\nlive in separate packages. They might share some types \u0026 code from\nshared HTTP package(s).\n\n## Who's leading this effort?\n\nBrad Fitzpatrick, [@bradfitz](https://github.com/bradfitz). I've owned\nthe net/http package for over 8 years and have plenty of gripes about\nit. I welcome all input. If we're going to finally change it, we\nshould get it right, so there's no need to rush this process.\n\n## Contributing\n\nThis repo is temporary and doesn't accept PRs and issues are disabled.\nIt will move at some point to Go's repos with Go's bots and policies.\n\nFor now, discuss at https://github.com/golang/go/issues/23707\n\n## What's the plan?\n\nRoughly:\n\n* Iterate on the API \u0026 godoc repeatedly until it looks right (with a fake, `panic(\"TODO\")`-only implementation)\n* Discuss, revise.\n* Add a temporary implementation (likely inefficient), wrapping the existing net/http Client.\n* Port code to use it. See if we're still happy.\n* Discuss, revise.\n* Copy `net/http` and `golang.org/x/net/http2` code into `httpclient` (likely several packages).\n* Benchmark, tune, revise API as needed.\n* Redo the \"legacy\" `net/http` and `golang.org/x/net/http2` client APIs as wrappers around `httpclient`\n\nOf course, this is all up for debate.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradfitz%2Fexp-httpclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradfitz%2Fexp-httpclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradfitz%2Fexp-httpclient/lists"}