PostAsync Method

Make a type-safe POST request with a request body.

Namespace

RestClient.Net

Containing Type

HttpClientExtensions

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:

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