Class ApiRequest
Encapsulates information for building and making a request to a RESTful HTTP API.
Implements
Namespace: ReqRest
Assembly: ReqRest.dll
Syntax
public sealed class ApiRequest : ApiRequestBase, IHttpRequestMessageBuilder, IHttpHeadersBuilder<HttpRequestHeaders>, IHttpHeadersBuilder, IHttpRequestPropertiesBuilder, IHttpContentBuilder, IHttpProtocolVersionBuilder, IRequestUriBuilder, IHttpMethodBuilder, IBuilder
Constructors
ApiRequest(Func<HttpClient>, Nullable<HttpRequestMessage>)
Initializes a new ApiRequestBase instance with the specified initial property values.
Declaration
public ApiRequest(Func<HttpClient> httpClientProvider, HttpRequestMessage? httpRequestMessage = default(HttpRequestMessage? ))
Parameters
Type | Name | Description |
---|---|---|
Func<HttpClient> | httpClientProvider | A function which returns an HttpClient instance which will ultimately be used to send the HttpRequestMessage for executing the API request. |
Nullable<HttpRequestMessage> | httpRequestMessage | The request from which the builder starts building. If null, a new instance is created instead. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
Methods
FetchResponseAsync(HttpCompletionOption, CancellationToken)
Sends the request and returns the resulting HTTP response.
Declaration
public Task<ApiResponse> FetchResponseAsync(HttpCompletionOption completionOption = HttpCompletionOption.ResponseContentRead, CancellationToken cancellationToken = default(CancellationToken))
Parameters
Type | Name | Description |
---|---|---|
HttpCompletionOption | completionOption | Defines when the operation should complete (as soon as a response is available or after reading the whole response content). |
CancellationToken | cancellationToken | A cancellation token which can be used to cancel the operation. |
Returns
Type | Description |
---|---|
Task<ApiResponse> | The response to the request. |
Remarks
This method uses the HttpClientProvider function for retrieving an HttpClient with which the request will be sent.
Examples
var response = await request.FetchResponseAsync();
Console.WriteLine($"Received status {response.StatusCode}");
Exceptions
Type | Condition |
---|---|
TaskCanceledException | The operation was canceled via the |
InvalidOperationException | The HttpClientProvider returned null. |
Receive<T>()
Declares that the response to this request may have a content of type T
.
This returns a builder instance which requires you to specify additional information about
the possible response (for example, for which status codes the type is a possible result).
Declaration
public ResponseTypeInfoBuilder<ApiRequest<T>> Receive<T>()
Returns
Type | Description |
---|---|
ResponseTypeInfoBuilder<ApiRequest<T>> | An ResponseTypeInfoBuilder<TRequest> instance which must be used to specify additional information about the possible response. |
Type Parameters
Name | Description |
---|---|
T | The .NET type which may be returned by the response following this request. |
ReceiveByteArray(StatusCodeRange[])
Declaration
public ApiRequest<byte[]> ReceiveByteArray(params StatusCodeRange[] forStatusCodes)
Parameters
Type | Name | Description |
---|---|---|
StatusCodeRange[] | forStatusCodes |
Returns
Type | Description |
---|---|
ApiRequest<Byte[]> |
ReceiveByteArray(IEnumerable<StatusCodeRange>)
Declares that the response to this request may have an HTTP content which can be read as a Byte array.
Declaration
public ApiRequest<byte[]> ReceiveByteArray(IEnumerable<StatusCodeRange> forStatusCodes)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<StatusCodeRange> | forStatusCodes | A set of status codes for which the HTTP content may be read as a Byte array. |
Returns
Type | Description |
---|---|
ApiRequest<Byte[]> | An ApiRequestBase, upgraded with the Byte array type. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
ArgumentException |
|
ReceiveNoContent()
Declares that the response to this request may have an empty HTTP content when
receiving a response with status code 204 No Content
.
Declaration
public ApiRequest<NoContent> ReceiveNoContent()
Returns
Type | Description |
---|---|
ApiRequest<NoContent> | An ApiRequestBase, upgraded with the NoContent type. |
ReceiveNoContent(StatusCodeRange[])
Declaration
public ApiRequest<NoContent> ReceiveNoContent(params StatusCodeRange[] forStatusCodes)
Parameters
Type | Name | Description |
---|---|---|
StatusCodeRange[] | forStatusCodes |
Returns
Type | Description |
---|---|
ApiRequest<NoContent> |
ReceiveNoContent(IEnumerable<StatusCodeRange>)
Declares that the response to this request may have an empty HTTP content, represented through the NoContent type.
Declaration
public ApiRequest<NoContent> ReceiveNoContent(IEnumerable<StatusCodeRange> forStatusCodes)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<StatusCodeRange> | forStatusCodes | A set of status codes for which no content is received. |
Returns
Type | Description |
---|---|
ApiRequest<NoContent> | An ApiRequestBase, upgraded with the NoContent type. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
ArgumentException |
|
ReceiveString(StatusCodeRange[])
Declaration
public ApiRequest<string> ReceiveString(params StatusCodeRange[] forStatusCodes)
Parameters
Type | Name | Description |
---|---|---|
StatusCodeRange[] | forStatusCodes |
Returns
Type | Description |
---|---|
ApiRequest<String> |
ReceiveString(IEnumerable<StatusCodeRange>)
Declares that the response to this request may have an HTTP content which can be read as a raw string.
Declaration
public ApiRequest<string> ReceiveString(IEnumerable<StatusCodeRange> forStatusCodes)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<StatusCodeRange> | forStatusCodes | A set of status codes for which the HTTP content may be read as a raw string. |
Returns
Type | Description |
---|---|
ApiRequest<String> | An ApiRequestBase, upgraded with the String type. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
ArgumentException |
|