Generate curl commands directly from your HttpClient or HttpRequestMessage in .NET β perfect for debugging, logging, and sharing HTTP requests.
If this project has made your life easier, consider buying us a coffee or sending a donation.
Every bit of support keeps us motivated, helps us add new features, fix bugs, and maintain the project β keeping it free and awesome for everyone! βπ
USDT (Tether β BEP20 / Binance Smart Chain) wallet address:
0x9d03Be8B979453bE300724FD4bb3eF77517d45AE
HttpClientToCurl is a lightweight and powerful .NET extension library that turns your HTTP requests into curl commands.
It works with both HttpClient and HttpRequestMessage, giving you two simple ways to generate curl commands:
Generate curl commands on demand using extension methods on either HttpClient or HttpRequestMessage.
Best for:
Debugging individual requests, creating reproducible Postman calls, or sharing API examples.
Automatically generates curl output whenever your app sends a request.
You can configure it through dependency injection:
- Global Registration β enable for all
HttpClientinstances created viaIHttpClientFactory - Per-Client Registration β enable only for selected clients
Best for:
Logging, monitoring, or tracing outgoing requests across the application.
- π§ͺ Instantly visualise and debug request payloads or headers
- π€ Share exact API calls with teammates or QA engineers
- βοΈ Simplify Postman and CLI reproduction
- π§© Lightweight, dependency-free, and easy to integrate
dotnet add package HttpClientToCurlOr visit the NuGet page here: HttpClientToCurl
For full examples, detailed usage, and advanced configuration options, please see the Wiki:
π Open Wiki β More Details
using System.Text;
using HttpClientToCurl;
class Program
{
static async Task Main()
{
var baseAddress = new Uri("http://localhost:1213/v1/");
var requestUri = "api/test";
using var httpClientInstance = new HttpClient { BaseAddress = baseAddress };
string requestBody = @"{""name"":""sara"",""requestId"":10001001,""amount"":20000}";
var httpRequestMessageInstance = new HttpRequestMessage(HttpMethod.Post, requestUri)
{
Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
};
httpRequestMessageInstance.Headers.Add("Authorization", "Bearer YourAccessToken");
// Option 1: Generate curl from HttpClient
httpClientInstance.GenerateCurlInConsole(httpRequestMessageInstance);
// Option 2: Generate curl from HttpRequestMessage
httpRequestMessageInstance.GenerateCurlInConsole(baseAddress);
await httpClientInstance.SendAsync(httpRequestMessageInstance);
}
}β Example Output
curl -X POST 'http://localhost:1213/v1/api/test' \
-H 'Authorization: Bearer YourAccessToken' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{"name":"sara","requestId":10001001,"amount":20000}'Enable curl logging for specific named clients only.
Program.cs / Startup.cs
using HttpClientToCurl;
// Register the curl generator once
builder.Services.AddHttpClientToCurl(builder.Configuration);
// Enable curl logging for selected clients
builder.Services.AddHttpClient("my-client1", showCurl: true);appsettings.json
"HttpClientToCurl": {
"Enable": true, // Master switch: enable or disable the entire HttpClientToCURL logging system
"ShowOnConsole": {
"TurnOn": true, // Enable console output for generated curl commands
"NeedAddDefaultHeaders": true, // Include default headers (like User-Agent, Accept, etc.) in the curl output
"EnableCompression": false, // Compress the console log output (not recommended for debugging readability)
"EnableCodeBeautification": true // Beautify and format the curl command for better readability
},
"SaveToFile": {
"TurnOn": true, // Enable saving the generated curl commands into a file
"NeedAddDefaultHeaders": true, // Include default headers (like User-Agent, Accept, etc.) in the curl output
"EnableCompression": false, // Compress the saved file (useful if logging a large number of requests)
"Filename": "curl_commands", // Name of the output file without extension (e.g., will produce curl_commands.log)
"Path": "C:\\Users\\Public" // Directory path where the log file will be created
}
}Enable curl generation globally β every HttpClient created through IHttpClientFactory will automatically log curl commands.
Program.cs / Startup.cs
using HttpClientToCurl;
// Register global curl generation
builder.Services.AddAllHttpClientToCurl(builder.Configuration);
// Register default HttpClient (now curl-enabled)
builder.Services.AddHttpClient();appsettings.json (same configuration options as above)
| Feature | Description |
|---|---|
| π Methods | Supports GET, POST, PUT, PATCH, DELETE |
| π§ Content Types | JSON, XML, FormUrlEncodedContent |
| πΎ Output | Console β’ File β’ String |
| π¨ Beautified Output | Optional pretty printing |
- How to Generate curl Script of the HttpClient in .NET
- New Feature in HttpClientToCurl for .NET: Debugging HttpRequestMessage Made Easy
Found a bug or want to improve this project? Open an issue or submit a pull request.
π§ Contact: [email protected]
If you find this project helpful, please give it a β β it helps others discover it too!