{"id":21815291,"url":"https://github.com/weihanli/dotnet-httpie","last_synced_at":"2025-12-03T14:03:57.366Z","repository":{"id":38388567,"uuid":"337128585","full_name":"WeihanLi/dotnet-httpie","owner":"WeihanLi","description":"Amazing HTTP command-line tool powered by .NET, inspired by httpie","archived":false,"fork":false,"pushed_at":"2025-09-20T07:07:57.000Z","size":828,"stargazers_count":36,"open_issues_count":1,"forks_count":4,"subscribers_count":2,"default_branch":"dev","last_synced_at":"2025-09-22T23:02:06.439Z","etag":null,"topics":["curl","dotnet-tool","http","http-cli","httpie","rest"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeihanLi.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-08T15:57:22.000Z","updated_at":"2025-09-20T07:08:01.000Z","dependencies_parsed_at":"2023-11-09T14:26:41.204Z","dependency_job_id":"4b66c6ab-8f9c-4578-ad1e-05b6b59da098","html_url":"https://github.com/WeihanLi/dotnet-httpie","commit_stats":{"total_commits":289,"total_committers":2,"mean_commits":144.5,"dds":0.05190311418685123,"last_synced_commit":"b6167850f0bd72cfb7a8cfd0de50ba379b9658e1"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/WeihanLi/dotnet-httpie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeihanLi%2Fdotnet-httpie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeihanLi%2Fdotnet-httpie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeihanLi%2Fdotnet-httpie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeihanLi%2Fdotnet-httpie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeihanLi","download_url":"https://codeload.github.com/WeihanLi/dotnet-httpie/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeihanLi%2Fdotnet-httpie/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276487478,"owners_count":25651133,"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","status":"online","status_checked_at":"2025-09-22T02:00:08.972Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","dotnet-tool","http","http-cli","httpie","rest"],"created_at":"2024-11-27T15:17:24.972Z","updated_at":"2025-12-03T14:03:57.352Z","avatar_url":"https://github.com/WeihanLi.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotnet-HTTPie\n\n[![dotnet-HTTPie](https://img.shields.io/nuget/v/dotnet-httpie)](https://www.nuget.org/packages/dotnet-httpie/)\n[![dotnet-HTTPie Latest](https://img.shields.io/nuget/vpre/dotnet-httpie)](https://www.nuget.org/packages/dotnet-httpie/absoluteLatest)\n[![GitHub Action Build Status](https://github.com/WeihanLi/dotnet-httpie/actions/workflows/dotnet.yml/badge.svg)](https://github.com/WeihanLi/dotnet-httpie/actions/workflows/dotnet.yml)\n[![Docker Pulls](https://img.shields.io/docker/pulls/weihanli/dotnet-httpie)](https://hub.docker.com/r/weihanli/dotnet-httpie/tags)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/WeihanLi/dotnet-httpie)\n\n\u003e **Modern, user-friendly command-line HTTP client for the .NET ecosystem**\n\ndotnet-httpie is a .NET tool that brings the power and simplicity of [HTTPie](https://github.com/httpie/httpie) to .NET developers. It's designed for testing, debugging, and interacting with APIs and HTTP servers with an intuitive command-line interface.\n\n![httpie](https://raw.githubusercontent.com/httpie/httpie/master/docs/httpie-animation.gif)\n\n## ✨ Key Features\n\n- 🚀 **Simple \u0026 Intuitive**: Human-friendly syntax for HTTP requests\n- 📁 **File Execution**: Run `.http` and `.rest` files for repeatable testing\n- 🔄 **cURL Support**: Execute cURL commands directly\n- 🐳 **Docker Ready**: Available as a Docker image for containerized environments\n- 🔗 **Request Chaining**: Reference previous responses in subsequent requests\n- 🌍 **Environment Support**: Multiple environment configurations\n- 📊 **Load Testing**: Built-in load testing capabilities\n- 🔐 **Authentication**: Support for various auth methods (JWT, API keys, Basic auth)\n- ⬇️ **File Downloads**: Download files with progress indicators\n- 🔍 **JSON Schema Validation**: Validate API responses against schemas\n- 💾 **Request Caching**: Cache requests for improved performance\n- 🎯 **Middleware System**: Extensible request/response pipeline\n\n## 🚀 Quick Start\n\n### Installation\n\nInstall the latest stable version:\n\n```bash\ndotnet tool update --global dotnet-httpie\n```\n\nOr install the latest preview:\n\n```bash\ndotnet tool update --global dotnet-httpie --prerelease\n```\n\n### Your First Request\n\n```bash\n# Simple GET request\ndotnet-http httpbin.org/get\n\n# POST with JSON data  \ndotnet-http POST httpbin.org/post name=John age:=30\n\n# With custom headers\ndotnet-http GET httpbin.org/headers Authorization:\"Bearer token\"\n```\n\n## 📖 Documentation\n\n| Topic | Description |\n|-------|-------------|\n| 📋 [Installation Guide](docs/articles/installation.md) | Detailed installation instructions for all platforms |\n| ⚡ [Quick Start](docs/articles/quick-start.md) | Get up and running in minutes |\n| 🌐 [HTTP Requests](docs/articles/http-requests.md) | Complete guide to making HTTP requests |\n| 📄 [File Execution](docs/articles/file-execution.md) | Execute .http/.rest files |\n| 🐳 [Docker Usage](docs/articles/docker-usage.md) | Using dotnet-httpie with Docker |\n| 💡 [Common Use Cases](docs/articles/examples/common-use-cases.md) | Practical examples and patterns |\n| 🔧 [Full Documentation](docs/articles/README.md) | Complete documentation index |\n\n## 💫 Command Syntax\n\n```bash\ndotnet-http [flags] [METHOD] URL [ITEM [ITEM]]\n```\n\n### Request Items\n\n| Type | Syntax | Example | Description |\n|------|--------|---------|-------------|\n| **Query Parameters** | `name==value` | `search==httpie` | URL query string parameters |\n| **Headers** | `name:value` | `Authorization:Bearer token` | HTTP request headers |\n| **JSON Data** | `name=value` | `name=John` | JSON request body fields |\n| **Raw JSON** | `name:=value` | `age:=30`, `active:=true` | Raw JSON values (numbers, booleans, objects) |\n\n## 🎯 Examples\n\n### Basic Requests\n\n```bash\n# GET request with query parameters\ndotnet-http GET httpbin.org/get search==httpie limit==10\n\n# POST request with JSON data\ndotnet-http POST httpbin.org/post name=John email=john@example.com age:=30\n\n# PUT request with headers\ndotnet-http PUT api.example.com/users/123 \\\n  Authorization:\"Bearer token\" \\\n  name=\"John Smith\" \\\n  active:=true\n```\n\n### Advanced Usage\n\n```bash\n# Complex JSON with nested objects\ndotnet-http POST api.example.com/users \\\n  name=John \\\n  address[city]=Seattle \\\n  address[zipcode]:=98101 \\\n  tags:='[\"developer\", \"api\"]'\n\n\n\n# Download files\ndotnet-http GET api.example.com/files/report.pdf --download\n```\n\n### Real-World API Examples\n\n```bash\n# GitHub API\ndotnet-http GET api.github.com/users/octocat\n\n# Create GitHub issue (with authentication)\ndotnet-http POST api.github.com/repos/owner/repo/issues \\\n  Authorization:\"token your-token\" \\\n  title=\"Bug report\" \\\n  body=\"Description of the issue\"\n\n# JSON API with multiple data types\ndotnet-http POST api.example.com/orders \\\n  Authorization:\"Bearer jwt-token\" \\\n  customer_id:=12345 \\\n  items:='[{\"id\": 1, \"qty\": 2}, {\"id\": 2, \"qty\": 1}]' \\\n  urgent:=true \\\n  notes=\"Please handle with care\"\n```\n\n## 📁 File Execution\n\nExecute HTTP requests from `.http` and `.rest` files:\n\n```bash\n# Execute HTTP file\ndotnet-http exec requests.http\n\n# Execute with specific environment\ndotnet-http exec api-tests.http --env production\n\n# Execute cURL commands\ndotnet-http exec commands.curl --type curl\n```\n\n### Example .http file:\n\n```http\n@baseUrl = https://api.example.com\n@token = your-jwt-token\n\n###\n\n# @name getUsers\nGET {{baseUrl}}/users\nAuthorization: Bearer {{token}}\n\n###\n\n# @name createUser  \nPOST {{baseUrl}}/users\nAuthorization: Bearer {{token}}\nContent-Type: application/json\n\n{\n  \"name\": \"John Doe\",\n  \"email\": \"john@example.com\"\n}\n\n###\n\n# Reference previous response\nGET {{baseUrl}}/users/{{createUser.response.body.id}}\nAuthorization: Bearer {{token}}\n```\n\n### Environment Support\n\nCreate `http-client.env.json`:\n\n```json\n{\n  \"development\": {\n    \"baseUrl\": \"http://localhost:3000\",\n    \"token\": \"dev-token\"\n  },\n  \"production\": {\n    \"baseUrl\": \"https://api.example.com\", \n    \"token\": \"prod-token\"\n  }\n}\n```\n\n## 🐳 Docker\n\nUse dotnet-httpie without installing .NET:\n\n```bash\n# Basic usage\ndocker run --rm weihanli/dotnet-httpie:latest httpbin.org/get\n\n# POST with data  \ndocker run --rm weihanli/dotnet-httpie:latest POST httpbin.org/post name=test\n\n# Execute HTTP files\ndocker run --rm -v $(pwd):/workspace -w /workspace \\\n  weihanli/dotnet-httpie:latest exec requests.http\n\n# With environment variables\ndocker run --rm -e API_TOKEN=\"your-token\" \\\n  weihanli/dotnet-httpie:latest GET api.example.com/protected \\\n  Authorization:\"Bearer $API_TOKEN\"\n```\n\n### Create an alias for easier usage:\n\n```bash\n# Add to your shell profile (.bashrc, .zshrc, etc.)\nalias http='docker run --rm weihanli/dotnet-httpie:latest'\n\n# Now use it like the installed version\nhttp GET httpbin.org/get\nhttp POST httpbin.org/post name=John\n```\n\n## 🔧 Advanced Features\n\n### Authentication\n- **JWT Tokens**: `Authorization:\"Bearer token\"`\n- **API Keys**: `X-API-Key:\"key\"` or `api_key==key`  \n- **Basic Auth**: `--auth username:password` or `Authorization:\"Basic base64\"`\n\n### File Operations\n- **Form data**: `--form field=value`\n- **Download**: `--download` flag\n- **Send raw data**: `--raw \"data\"`\n\n### Request Features\n- **Query parameters**: `param==value`\n- **Custom headers**: `Header-Name:\"value\"`\n- **JSON data**: `field=value` or `field:=rawjson`\n- **Form data**: `--form` flag\n- **Raw data**: `--raw \"data\"`\n\n### Execution Modes\n- **Offline mode**: `--offline` (preview requests)\n- **Debug mode**: `--debug` (detailed logging)\n- **Environment**: `--env production`\n\n### Response Handling\n- **Body only**: `--body` flag\n- **Follow redirects**: `--follow`\n- **JSON processing**: Pipe to `jq` for advanced processing\n\n## 🚀 Use Cases\n\n- **API Development**: Test endpoints during development\n- **API Documentation**: Executable examples in documentation\n- **CI/CD Testing**: Automated API testing in pipelines\n- **Load Testing**: Built-in load testing capabilities  \n- **Integration Testing**: Test service-to-service communication\n- **Debugging**: Inspect HTTP requests and responses\n- **Scripting**: Automate API interactions in shell scripts\n\n## 🤝 Contributing\n\nWe welcome contributions! Here's how you can help:\n\n1. **Report Issues**: Found a bug? [Open an issue](https://github.com/WeihanLi/dotnet-httpie/issues)\n2. **Feature Requests**: Have an idea? [Open an issue](https://github.com/WeihanLi/dotnet-httpie/issues)\n3. **Documentation**: Help improve the docs\n4. **Code**: Submit pull requests for bug fixes or features\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/WeihanLi/dotnet-httpie.git\ncd dotnet-httpie\n\n# Build the project\ndotnet build\n\n# Run tests\ndotnet test\n\n# Install locally for testing\ndotnet pack\ndotnet tool install --global --add-source ./artifacts dotnet-httpie\n```\n\n## 📚 Resources\n\n- **📖 [Complete Documentation](docs/articles/README.md)** - Comprehensive guides and tutorials\n- **🎯 [Examples](docs/articles/examples/common-use-cases.md)** - Real-world usage patterns\n- **🐳 [Docker Guide](docs/articles/docker-usage.md)** - Containerized usage\n- **📄 [Release Notes](docs/ReleaseNotes.md)** - What's new in each version\n- **💬 [Issues](https://github.com/WeihanLi/dotnet-httpie/issues)** - Community Q\u0026A, bug reports, and feature requests\n\n## 🙏 Acknowledgments\n\n- Inspired by the amazing [HTTPie](https://github.com/httpie/httpie) project\n- Built with ❤️ for the .NET community\n- Special thanks to all [contributors](https://github.com/WeihanLi/dotnet-httpie/contributors)\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**⭐ Star this repository if you find it useful!**\n\n[🏠 Homepage](https://github.com/WeihanLi/dotnet-httpie) • \n[📖 Documentation](docs/articles/README.md) • \n[🐳 Docker Hub](https://hub.docker.com/r/weihanli/dotnet-httpie) • \n[📦 NuGet](https://www.nuget.org/packages/dotnet-httpie/)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweihanli%2Fdotnet-httpie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweihanli%2Fdotnet-httpie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweihanli%2Fdotnet-httpie/lists"}