ReqRest
Show / Hide Table of Contents

Class ApiRequest

Encapsulates information for building and making a request to a RESTful HTTP API.

Inheritance
Object
HttpRequestMessageBuilder
ApiRequestBase
ApiRequest
Implements
IHttpRequestMessageBuilder
IHttpHeadersBuilder<HttpRequestHeaders>
IHttpHeadersBuilder
IHttpRequestPropertiesBuilder
IHttpContentBuilder
IHttpProtocolVersionBuilder
IRequestUriBuilder
IHttpMethodBuilder
IBuilder
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
  • httpClientProvider

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 cancellationToken.

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
  • forStatusCodes
ArgumentException

forStatusCodes is empty.

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
  • forStatusCodes
ArgumentException

forStatusCodes is empty.

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
  • forStatusCodes
ArgumentException

forStatusCodes is empty.

Implements

IHttpRequestMessageBuilder
IHttpHeadersBuilder<T>
IHttpHeadersBuilder
IHttpRequestPropertiesBuilder
IHttpContentBuilder
IHttpProtocolVersionBuilder
IRequestUriBuilder
IHttpMethodBuilder
IBuilder

Extension Methods

JsonHttpContentBuilderExtensions.SetJsonContent<T>(T, Nullable<Object>, Nullable<Encoding>, Nullable<JsonHttpContentSerializer>)
JsonHttpMethodBuilderExtensions.PostJson<T>(T, Nullable<Object>, Nullable<Encoding>, Nullable<JsonHttpContentSerializer>)
JsonHttpMethodBuilderExtensions.PutJson<T>(T, Nullable<Object>, Nullable<Encoding>, Nullable<JsonHttpContentSerializer>)
JsonHttpMethodBuilderExtensions.PatchJson<T>(T, Nullable<Object>, Nullable<Encoding>, Nullable<JsonHttpContentSerializer>)
ApiRequestBaseExtensions.SetHttpClientProvider<T>(T, HttpClient)
ApiRequestBaseExtensions.SetHttpClientProvider<T>(T, Func<HttpClient>)
BuilderExtensions.Configure<T>(T, Action<T>)
BuilderExtensions.If<T>(T, Boolean, Action<T>)
BuilderExtensions.IfNot<T>(T, Boolean, Action<T>)
HttpContentBuilderExtensions.SetFormUrlEncodedContent<T>(T, (String Key, String Value)[])
HttpContentBuilderExtensions.SetFormUrlEncodedContent<T>(T, IEnumerable<(String Key, String Value)>)
HttpContentBuilderExtensions.SetFormUrlEncodedContent<T>(T, KeyValuePair<String, String>[])
HttpContentBuilderExtensions.SetFormUrlEncodedContent<T>(T, IEnumerable<KeyValuePair<String, String>>)
HttpContentBuilderExtensions.SetContent<T>(T, String, Nullable<Encoding>, Nullable<String>)
HttpContentBuilderExtensions.SetContent<T>(T, Byte[])
HttpContentBuilderExtensions.SetContent<T>(T, Byte[], Int32, Int32)
HttpContentBuilderExtensions.SetContent<T>(T, Nullable<HttpContent>)
HttpContentBuilderExtensions.SetContentType<T>(T, String, Nullable<String>, Nullable<IEnumerable<NameValueHeaderValue>>)
HttpContentBuilderExtensions.SetContentType<T>(T, Nullable<MediaTypeHeaderValue>)
HttpContentBuilderExtensions.AddContentHeader<T>(T, String)
HttpContentBuilderExtensions.AddContentHeader<T>(T, String, Nullable<String>)
HttpContentBuilderExtensions.AddContentHeader<T>(T, String, Nullable<IEnumerable<Nullable<String>>>)
HttpContentBuilderExtensions.RemoveContentHeader<T>(T, Nullable<String>[], names)
HttpContentBuilderExtensions.ClearContentHeaders<T>(T)
HttpContentBuilderExtensions.ConfigureContentHeaders<T>(T, Action<HttpContentHeaders>)
HttpHeadersBuilderExtensions.AddHeader<T>(T, String)
HttpHeadersBuilderExtensions.AddHeader<T>(T, String, Nullable<String>)
HttpHeadersBuilderExtensions.AddHeader<T>(T, String, Nullable<IEnumerable<Nullable<String>>>)
HttpHeadersBuilderExtensions.RemoveHeader<T>(T, Nullable<String>[], names)
HttpHeadersBuilderExtensions.SetHeader<T>(T, String)
HttpHeadersBuilderExtensions.SetHeader<T>(T, String, Nullable<String>)
HttpHeadersBuilderExtensions.SetHeader<T>(T, String, Nullable<IEnumerable<Nullable<String>>>)
HttpHeadersBuilderExtensions.ClearHeaders<T>(T)
HttpHeadersBuilderExtensions.ConfigureHeaders<T>(T, Action<HttpHeaders>)
HttpMethodBuilderExtensions.Get<T>(T)
HttpMethodBuilderExtensions.Post<T>(T)
HttpMethodBuilderExtensions.Put<T>(T)
HttpMethodBuilderExtensions.Delete<T>(T)
HttpMethodBuilderExtensions.Options<T>(T)
HttpMethodBuilderExtensions.Trace<T>(T)
HttpMethodBuilderExtensions.Head<T>(T)
HttpMethodBuilderExtensions.Patch<T>(T)
HttpMethodBuilderExtensions.SetMethod<T>(T, String)
HttpMethodBuilderExtensions.SetMethod<T>(T, HttpMethod)
HttpProtocolVersionBuilderExtensions.SetVersion<T>(T, Version)
HttpRequestMessageBuilderExtensions.ConfigureRequest<T>(T, Action<HttpRequestMessage>)
HttpRequestMessageBuilderExtensions.ConfigureRequest<T>(T, Func<HttpRequestMessage>)
HttpRequestMessageBuilderExtensions.ConfigureRequest<T>(T, Func<HttpRequestMessage, HttpRequestMessage>)
HttpRequestMessageBuilderExtensions.SetRequest<T>(T, HttpRequestMessage)
HttpRequestPropertiesBuilderExtensions.SetProperty<T>(T, String, Nullable<Object>)
HttpRequestPropertiesBuilderExtensions.AddProperty<T>(T, String, Nullable<Object>)
HttpRequestPropertiesBuilderExtensions.RemoveProperty<T>(T, Nullable<String>[], names)
HttpRequestPropertiesBuilderExtensions.ClearProperties<T>(T)
HttpRequestPropertiesBuilderExtensions.ConfigureProperties<T>(T, Action<IDictionary<String, Nullable<Object>>>)
RequestUriBuilderExtensions.ConfigureRequestUri<T>(T, Action<UrlBuilder>)
RequestUriBuilderExtensions.ConfigureRequestUri<T>(T, Func<UrlBuilder, Nullable<Uri>>)
RequestUriBuilderExtensions.SetRequestUri<T>(T, Nullable<String>)
RequestUriBuilderExtensions.SetRequestUri<T>(T, Nullable<Uri>)
Back to top Copyright © 2019 ReqRest - Generated with DocFX - Material Theme made by Oscar Vásquez - Impressum (Imprint)