PostAsync Method
Make a type-safe POST request with a request body.
Namespace
RestClient.Net
Containing Type
Signature
public static async Task<Result<TSuccess, HttpError<TError>>> PostAsync<TRequest, TSuccess, TError>(
this HttpClient httpClient,
AbsoluteUrl url,
TRequest body,
Func<TRequest, HttpContent> serializeRequest,
Func<HttpResponseMessage, CancellationToken, Task<TSuccess>> deserializeSuccess,
Func<HttpResponseMessage, CancellationToken, Task<TError>> deserializeError,
IReadOnlyDictionary<string, string>? headers = null,
CancellationToken cancellationToken = default
)
Parameters
| Parameter | Type | Description |
|---|---|---|
url |
AbsoluteUrl |
The request URL |
body |
TRequest |
The request body object |
serializeRequest |
Func<TRequest, HttpContent> |
Function to serialize the request body |
deserializeSuccess |
Func<HttpResponseMessage, CancellationToken, Task<TSuccess>> |
Function to deserialize success response |
deserializeError |
Func<HttpResponseMessage, CancellationToken, Task<TError>> |
Function to deserialize error response |
headers |
IReadOnlyDictionary<string, string>? |
Optional request headers |
cancellationToken |
CancellationToken |
Optional cancellation token |
Returns
Task<Result<TSuccess, HttpError<TError>>> - A discriminated union that is either:
Ok<TSuccess>- Success with deserialized dataError<HttpError<TError>>- Error with ResponseError or ExceptionError
Example
var newUser = new CreateUserRequest("John", "john@example.com");
var result = await httpClient.PostAsync(
url: "https://api.example.com/users".ToAbsoluteUrl(),
body: newUser,
serializeRequest: SerializeJson,
deserializeSuccess: DeserializeUser,
deserializeError: DeserializeApiError
);
See Also
- HttpClientExtensions - All extension methods
- Serialization - Serializer examples