Request
public class Request : @unchecked Sendable
extension Request: Equatable
extension Request: Hashable
extension Request: CustomStringConvertible
Request
is the common superclass of all Alamofire request types and provides common state, delegate, and callback
handling.
-
UUID
providing a unique identifier for theRequest
, used in theHashable
andEquatable
conformances.Declaration
Swift
public let id: UUID
-
The serial queue for all internal async actions.
Declaration
Swift
public let underlyingQueue: DispatchQueue
-
The queue used for all serialization actions. By default it’s a serial queue that targets
underlyingQueue
.Declaration
Swift
public let serializationQueue: DispatchQueue
-
EventMonitor
used for event callbacks.Declaration
Swift
public let eventMonitor: (any EventMonitor)?
-
The
Request
‘s interceptor.Declaration
Swift
public let interceptor: (any RequestInterceptor)?
-
The
Request
‘s delegate.Declaration
Swift
public private(set) weak var delegate: (any RequestDelegate)? { get }
-
Returns whether
state
is.initialized
.Declaration
Swift
public var isInitialized: Bool { get }
-
Returns whether
state
is.resumed
.Declaration
Swift
public var isResumed: Bool { get }
-
Returns whether
state
is.suspended
.Declaration
Swift
public var isSuspended: Bool { get }
-
Returns whether
state
is.cancelled
.Declaration
Swift
public var isCancelled: Bool { get }
-
Returns whether
state
is.finished
.Declaration
Swift
public var isFinished: Bool { get }
-
Closure type executed when monitoring the upload or download progress of a request.
Declaration
Swift
public typealias ProgressHandler = @Sendable (_ progress: Progress) -> Void
-
Progress
of the upload of the body of the executedURLRequest
. Reset to0
if theRequest
is retried.Declaration
Swift
public let uploadProgress: Progress
-
Progress
of the download of any response data. Reset to0
if theRequest
is retried.Declaration
Swift
public let downloadProgress: Progress
-
ProgressHandler
called whenuploadProgress
is updated, on the providedDispatchQueue
.Declaration
Swift
public internal(set) var uploadProgressHandler: (handler: ProgressHandler, queue: DispatchQueue)? { get set }
-
ProgressHandler
called whendownloadProgress
is updated, on the providedDispatchQueue
.Declaration
Swift
public internal(set) var downloadProgressHandler: (handler: ProgressHandler, queue: DispatchQueue)? { get set }
-
RedirectHandler
set on the instance.Declaration
Swift
public internal(set) var redirectHandler: (any RedirectHandler)? { get set }
-
CachedResponseHandler
set on the instance.Declaration
Swift
public internal(set) var cachedResponseHandler: (any CachedResponseHandler)? { get set }
-
URLCredential
used for authentication challenges. Created by calling one of theauthenticate
methods.Declaration
Swift
public internal(set) var credential: URLCredential? { get set }
-
All
URLRequest
s created on behalf of theRequest
, including original and adapted requests.Declaration
Swift
public var requests: [URLRequest] { get }
-
First
URLRequest
created on behalf of theRequest
. May not be the first one actually executed.Declaration
Swift
public var firstRequest: URLRequest? { get }
-
Last
URLRequest
created on behalf of theRequest
.Declaration
Swift
public var lastRequest: URLRequest? { get }
-
Current
URLRequest
created on behalf of theRequest
.Declaration
Swift
public var request: URLRequest? { get }
-
URLRequest
s from all of theURLSessionTask
s executed on behalf of theRequest
. May be different fromrequests
due toURLSession
manipulation.Declaration
Swift
public var performedRequests: [URLRequest] { get }
-
HTTPURLResponse
received from the server, if any. If theRequest
was retried, this is the response of the lastURLSessionTask
.Declaration
Swift
public var response: HTTPURLResponse? { get }
-
All
URLSessionTask
s created on behalf of theRequest
.Declaration
Swift
public var tasks: [URLSessionTask] { get }
-
First
URLSessionTask
created on behalf of theRequest
.Declaration
Swift
public var firstTask: URLSessionTask? { get }
-
Last
URLSessionTask
created on behalf of theRequest
.Declaration
Swift
public var lastTask: URLSessionTask? { get }
-
Current
URLSessionTask
created on behalf of theRequest
.Declaration
Swift
public var task: URLSessionTask? { get }
-
All
URLSessionTaskMetrics
gathered on behalf of theRequest
. Should correspond to thetasks
created.Declaration
Swift
public var allMetrics: [URLSessionTaskMetrics] { get }
-
First
URLSessionTaskMetrics
gathered on behalf of theRequest
.Declaration
Swift
public var firstMetrics: URLSessionTaskMetrics? { get }
-
Last
URLSessionTaskMetrics
gathered on behalf of theRequest
.Declaration
Swift
public var lastMetrics: URLSessionTaskMetrics? { get }
-
Current
URLSessionTaskMetrics
gathered on behalf of theRequest
.Declaration
Swift
public var metrics: URLSessionTaskMetrics? { get }
-
Number of times the
Request
has been retried.Declaration
Swift
public var retryCount: Int { get }
-
Error
returned from Alamofire internally, from the network request directly, or any validators executed.Declaration
Swift
public internal(set) var error: AFError? { get set }
-
Cancels the instance. Once cancelled, a
Request
can no longer be resumed or suspended.Declaration
Swift
@discardableResult public func cancel() -> Self
Return Value
The instance.
-
Suspends the instance.
Declaration
Swift
@discardableResult public func suspend() -> Self
Return Value
The instance.
-
Resumes the instance.
Declaration
Swift
@discardableResult public func resume() -> Self
Return Value
The instance.
-
Associates a credential using the provided values with the instance.
Declaration
Swift
@discardableResult public func authenticate(username: String, password: String, persistence: URLCredential.Persistence = .forSession) -> Self
Parameters
username
The username.
password
The password.
persistence
The
URLCredential.Persistence
for the createdURLCredential
..forSession
by default.Return Value
The instance.
-
Associates the provided credential with the instance.
Declaration
Swift
@discardableResult public func authenticate(with credential: URLCredential) -> Self
Parameters
credential
The
URLCredential
.Return Value
The instance.
-
Sets a closure to be called periodically during the lifecycle of the instance as data is read from the server.
Note
Only the last closure provided is used.
Declaration
Swift
@discardableResult @preconcurrency public func downloadProgress(queue: DispatchQueue = .main, closure: @escaping ProgressHandler) -> Self
Parameters
queue
The
DispatchQueue
to execute the closure on..main
by default.closure
The closure to be executed periodically as data is read from the server.
Return Value
The instance.
-
Sets a closure to be called periodically during the lifecycle of the instance as data is sent to the server.
Note
Only the last closure provided is used.
Declaration
Swift
@discardableResult @preconcurrency public func uploadProgress(queue: DispatchQueue = .main, closure: @escaping ProgressHandler) -> Self
Parameters
queue
The
DispatchQueue
to execute the closure on..main
by default.closure
The closure to be executed periodically as data is sent to the server.
Return Value
The instance.
-
Sets the redirect handler for the instance which will be used if a redirect response is encountered.
Note
Attempting to set the redirect handler more than once is a logic error and will crash.
Declaration
Swift
@discardableResult @preconcurrency public func redirect(using handler: any RedirectHandler) -> Self
Parameters
handler
The
RedirectHandler
.Return Value
The instance.
-
Sets the cached response handler for the
Request
which will be used when attempting to cache a response.Note
Attempting to set the cache handler more than once is a logic error and will crash.
Declaration
Swift
@discardableResult @preconcurrency public func cacheResponse(using handler: any CachedResponseHandler) -> Self
Parameters
handler
Return Value
The instance.
-
Sets a handler to be called when the cURL description of the request is available.
Note
When waiting for a
Request
‘sURLRequest
to be created, only the lasthandler
will be called.Declaration
Swift
@discardableResult @preconcurrency public func cURLDescription(on queue: DispatchQueue, calling handler: @escaping @Sendable (String) -> Void) -> Self
Parameters
queue
DispatchQueue
on whichhandler
will be called.handler
Closure to be called when the cURL description is available.
Return Value
The instance.
-
Sets a handler to be called when the cURL description of the request is available.
Note
When waiting for a
Request
‘sURLRequest
to be created, only the lasthandler
will be called.Declaration
Swift
@discardableResult @preconcurrency public func cURLDescription(calling handler: @escaping @Sendable (String) -> Void) -> Self
Parameters
handler
Closure to be called when the cURL description is available. Called on the instance’s
underlyingQueue
by default.Return Value
The instance.
-
Sets a closure to called whenever Alamofire creates a
URLRequest
for this instance.Note
This closure will be called multiple times if the instance adapts incoming
URLRequest
s or is retried.Declaration
Swift
@discardableResult @preconcurrency public func onURLRequestCreation(on queue: DispatchQueue = .main, perform handler: @escaping @Sendable (URLRequest) -> Void) -> Self
Parameters
queue
DispatchQueue
on whichhandler
will be called..main
by default.handler
Closure to be called when a
URLRequest
is available.Return Value
The instance.
-
Sets a closure to be called whenever the instance creates a
URLSessionTask
.Note
This API should only be used to provide
URLSessionTask
s to existing API, likeNSFileProvider
. It SHOULD NOT be used to interact with tasks directly, as that may be break Alamofire features. Additionally, this closure may be called multiple times if the instance is retried.Declaration
Swift
@discardableResult @preconcurrency public func onURLSessionTaskCreation(on queue: DispatchQueue = .main, perform handler: @escaping @Sendable (URLSessionTask) -> Void) -> Self
Parameters
queue
DispatchQueue
on whichhandler
will be called..main
by default.handler
Closure to be called when the
URLSessionTask
is available.Return Value
The instance.
-
Posted when a
Request
is resumed. TheNotification
contains the resumedRequest
.Declaration
Swift
public static let didResumeNotification: Notification.Name
-
Posted when a
Request
is suspended. TheNotification
contains the suspendedRequest
.Declaration
Swift
public static let didSuspendNotification: Notification.Name
-
Posted when a
Request
is cancelled. TheNotification
contains the cancelledRequest
.Declaration
Swift
public static let didCancelNotification: Notification.Name
-
Posted when a
Request
is finished. TheNotification
contains the completedRequest
.Declaration
Swift
public static let didFinishNotification: Notification.Name
-
Posted when a
URLSessionTask
is resumed. TheNotification
contains theRequest
associated with theURLSessionTask
.Declaration
Swift
public static let didResumeTaskNotification: Notification.Name
-
Posted when a
URLSessionTask
is suspended. TheNotification
contains theRequest
associated with theURLSessionTask
.Declaration
Swift
public static let didSuspendTaskNotification: Notification.Name
-
Posted when a
URLSessionTask
is cancelled. TheNotification
contains theRequest
associated with theURLSessionTask
.Declaration
Swift
public static let didCancelTaskNotification: Notification.Name
-
Posted when a
URLSessionTask
is completed. TheNotification
contains theRequest
associated with theURLSessionTask
.Declaration
Swift
public static let didCompleteTaskNotification: Notification.Name
-
Type indicating how a
See moreDataRequest
orDataStreamRequest
should proceed after receiving anHTTPURLResponse
.Declaration
Swift
public enum ResponseDisposition : Sendable
-
Declaration
Swift
public static func == (lhs: Request, rhs: Request) -> Bool
-
Declaration
Swift
public func hash(into hasher: inout Hasher)
-
A textual representation of this instance, including the
HTTPMethod
andURL
if theURLRequest
has been created, as well as the response status code, if a response has been received.Declaration
Swift
public var description: String { get }
-
cURL representation of the instance.
Declaration
Swift
public func cURLDescription() -> String
Return Value
The cURL equivalent of the instance.
-
Creates a
StreamOf<Progress>
for the instance’s upload progress.Declaration
Parameters
bufferingPolicy
BufferingPolicy
that determines the stream’s buffering behavior..unbounded
by default.Return Value
The
StreamOf<Progress>
. -
Creates a
StreamOf<Progress>
for the instance’s download progress.Declaration
Parameters
bufferingPolicy
BufferingPolicy
that determines the stream’s buffering behavior..unbounded
by default.Return Value
The
StreamOf<Progress>
. -
Creates a
StreamOf<URLRequest>
for theURLRequest
s produced for the instance.Declaration
Parameters
bufferingPolicy
BufferingPolicy
that determines the stream’s buffering behavior..unbounded
by default.Return Value
The
StreamOf<URLRequest>
. -
Creates a
StreamOf<URLSessionTask>
for theURLSessionTask
s produced for the instance.Declaration
Parameters
bufferingPolicy
BufferingPolicy
that determines the stream’s buffering behavior..unbounded
by default.Return Value
-
Creates a
StreamOf<String>
for the cURL descriptions produced for the instance.Declaration
Parameters
bufferingPolicy
BufferingPolicy
that determines the stream’s buffering behavior..unbounded
by default.Return Value
The
StreamOf<String>
.
-
Used to represent whether a validation succeeded or failed.
Declaration
Swift
public typealias ValidationResult = Result<Void, any (Error & Sendable)>