{"id":15343681,"url":"https://github.com/spacewander/quick","last_synced_at":"2025-04-14T23:36:03.478Z","repository":{"id":71091938,"uuid":"195390632","full_name":"spacewander/quick","owner":"spacewander","description":"Like curl, but for HTTP over QUIC","archived":false,"fork":false,"pushed_at":"2025-03-13T02:11:59.000Z","size":113,"stargazers_count":23,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-28T11:42:41.391Z","etag":null,"topics":["client","command-line","quic"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spacewander.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":"2019-07-05T10:29:39.000Z","updated_at":"2025-02-23T13:22:45.000Z","dependencies_parsed_at":"2023-03-11T09:53:43.380Z","dependency_job_id":null,"html_url":"https://github.com/spacewander/quick","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacewander%2Fquick","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacewander%2Fquick/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacewander%2Fquick/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacewander%2Fquick/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spacewander","download_url":"https://codeload.github.com/spacewander/quick/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248980645,"owners_count":21193135,"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":["client","command-line","quic"],"created_at":"2024-10-01T10:48:32.997Z","updated_at":"2025-04-14T23:36:03.462Z","avatar_url":"https://github.com/spacewander.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Quick\n\nLike curl but for HTTP over QUIC\n\n[![Travis](https://travis-ci.org/spacewander/quick.svg?branch=master)](https://travis-ci.org/spacewander/quick)\n[![codecov.io](https://codecov.io/github/spacewander/quick/coverage.svg?branch=master)](https://codecov.io/github/spacewander/quick?branch=master)\n[![license](https://img.shields.io/badge/License-GPLv3-green.svg)](https://github.com/spacewander/quick/blob/master/LICENSE)\n\n## Which version of QUIC is supported by this tool?\n\nBy using `quic-go v0.10.2`, this tool supports gQUIC 39/43/44, which are also\nsupported by latest Chrome and [Caddy](https://github.com/caddyserver/caddy)\nwhen I start to write this documentation.\n\nWhy not support latest iQUIC? The QUIC protocol is changing rapidly (break changes\nwarning!). Maybe I will start to support iQUIC when the protocol is stable, or\nmaybe someone will send me a pull request.\n\nNote that this tool doesn't support HTTP3. The HTTP over QUIC implemented by this\nversion of quic-go is different from HTTP3. The HTTP3 is still a draft, and I\nwill start to support it (via upgrading quic-go?) once the protocol is stable.\n\n## Feature\n\n### Normal mode\n\nThis tool allows you to communicate HTTP over QUIC server in curl way.\nFor example:\n\n```\nquick -H \"Content-Type: application/x-www-form-urlencoded\" -d @data_file -X PUT \\\n    -k -i -o resp_body.txt 127.0.0.1:8443\n```\n\nNote that `-X PUT` is used here instead of the curl style `-XPUT` because the\nway to handle command line arguments is different between Go and curl.\n\nRun `quick -h` to find more options.\n\n### Benchmark mode\n\nThis tool allows you to do benchmark with a HTTP over QUIC server.\nFor instance:\n\n```\n$ quick -bm-duration 30s -bm-conn 2 -bm-req-per-conn 4 www.test.com:8443\nStart benchmark at 2020-01-13T17:19:35+08:00\nRunning 30s test @ https://www.test.com:8443\n  2 connections and 4 requests per connection\n  13872 requests in 30.070340458s\n        Item      Avg      Stdev       Max   +/-Stdev\n     Latency  17.31ms    41.11ms  574.53ms     98.83%\n  Latency Distribution\n    50.0%       12.57ms\n    75.0%       15.38ms\n    90.0%       21.54ms\n    95.0%       26.71ms\n    99.0%       66.15ms\n    99.5%       506.51ms\n    99.9%       538.54ms\n  Non-2xx or 3xx responses: 13872\nRequests/sec:    461.318355\n```\n\nTo enable the benchmark mode, please specify `-bm-duration` and `-bm-conn` and\n`-bm-reqs-per-conn`.\n\nMost of the arguments in the normal mode can be used in the benchmark mode too.\n(except `-o`, `-i`, `-I` and `-dump-cookie`)\n\nNote that `quick` doesn't verify the targer server's cerificate and doesn't redirect\nthe request during the benchmark.\n\n## Installation\n\n\n1. Require Go 1.12\n2. Enable Go modules: `export GO111MODULE=on`\n3. Run `go get -v github.com/spacewander/quick`\n\n## The HTTP3 support of curl is under development, why I need to use this tool?\n\nWhile curl is trying to support HTTP3 (draft), this tool supports HTTP over QUIC.\nThe HTTP over QUIC(gQUIC actually) which is used by Chrome and Caddy can't\ncommunicate with the HTTP3 (draft). So you might need this tool to send request\nto some HTTP servers use QUIC(gQUIC actually).\n\nOnce the HTTP3 is no longer a draft, both curl and this tool will support HTTP3.\nIf you want to use the latest version of a command line HTTP3 client, this tool\nis eaiser to install, though building curl from source is easy too.\n\nBy the way, this tool also allow you to do benchmark via the benchmark mode,\nwhich is definitely not a feature provided by curl.\n\n## This tool is not the same as curl!\n\nAlthough I try to mimic curl via providing a group of similar APIs, this tool\nis not a drop-in replacement. For example, the default Content-Type of `-d data`\nis `application/json` but not `application/x-www-form-urlencoded`.\n\nIf the behavior of this tool is annoying (not because of the difference from curl),\nplease open an issue and let's find a solution.\n\n## Is there '-v' or '-vv' option?\n\nYou can use environment variable `QUIC_GO_LOG_LEVEL=info` or `QUIC_GO_LOG_LEVEL=debug` instead.\nThis feature is provided by quic-go itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspacewander%2Fquick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspacewander%2Fquick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspacewander%2Fquick/lists"}