Back to Alamofire

Session

docs/docsets/Alamofire.docset/Contents/Resources/Documents/Classes/Session.html

5.12.059.4 KB
Original Source

Session

open class Session : @unchecked Sendable
extension Session: RequestDelegate

Session creates and manages Alamofire’s Request types during their lifetimes. It also provides common functionality for all Requests, including queuing, interception, trust management, redirect handling, and response cache handling.

`

                default
                `

Shared singleton instance used by all AF.request APIs. Cannot be modified.

Declaration

Swift

public static let `default`: Session

`

                RequestSetup
                `

Type describing the timing of Request setup after creation.

See more

Declaration

Swift

public enum RequestSetup

`

                session
                `

Underlying URLSession used to create URLSessionTasks for this instance, and for which this instance’s delegate handles URLSessionDelegate callbacks.

Note

This instance should NOT be used to interact with the underlying URLSessionTasks. Doing so will break internal Alamofire logic that tracks those tasks.

Declaration

Swift

public let session: URLSession

`

                delegate
                `

Instance’s SessionDelegate, which handles the URLSessionDelegate methods and Request interaction.

Declaration

Swift

public let delegate: SessionDelegate

`

                rootQueue
                `

Root DispatchQueue for all internal callbacks and state update. MUST be a serial queue.

Declaration

Swift

public let rootQueue: DispatchQueue

`

                startRequestsImmediately
                `

Value determining whether this instance automatically calls resume() on all created Requests.

Declaration

Swift

public let startRequestsImmediately: Bool

`

                requestSetup
                `

Value determining the timing of Request setup after creation. .lazy by default.

Note

Prior to Alamofire 5.11, Session acted as if this was set to .eager, so if any behavior changes are noted, .eager can be used for backward compatibility.

Declaration

Swift

public let requestSetup: RequestSetup

`

                requestQueue
                `

DispatchQueue on which URLRequests are created asynchronously. By default this queue uses rootQueue as its target, but a separate queue can be used if request creation is determined to be a bottleneck. Always profile and test before introducing an additional queue.

Declaration

Swift

public let requestQueue: DispatchQueue

`

                serializationQueue
                `

DispatchQueue passed to all Requests on which they perform their response serialization. By default this queue uses rootQueue as its target but a separate queue can be used if response serialization is determined to be a bottleneck. Always profile and test before introducing an additional queue.

Declaration

Swift

public let serializationQueue: DispatchQueue

`

                interceptor
                `

RequestInterceptor used for all Request created by the instance. RequestInterceptors can also be added on a per-Request basis, in which case interceptors from the Session are executed first. nil by default.

Declaration

Swift

public let interceptor: (any RequestInterceptor)?

`

                serverTrustManager
                `

ServerTrustManager instance used to evaluate all trust challenges and provide certificate and key pinning.

Declaration

Swift

public let serverTrustManager: ServerTrustManager?

`

                redirectHandler
                `

RedirectHandler instance used to provide customization for request redirection.

Declaration

Swift

public let redirectHandler: (any RedirectHandler)?

`

                cachedResponseHandler
                `

CachedResponseHandler instance used to provide customization of cached response handling.

Declaration

Swift

public let cachedResponseHandler: (any CachedResponseHandler)?

`

                eventMonitor
                `

CompositeEventMonitor used to compose any passed EventMonitors. EventMonitors can also be added on a per-Request basis, in which case monitors from the Session are executed first.

Declaration

Swift

public let eventMonitor: CompositeEventMonitor

`

                defaultEventMonitors
                `

EventMonitors included in all instances unless overwritten. [AlamofireNotifications()] by default.

Declaration

Swift

@available(*, deprecated, message: "Use [AlamofireNotifications(﹚] directly.")
public let defaultEventMonitors: [any EventMonitor]

`

                init(session:delegate:rootQueue:startRequestsImmediately:requestSetup:requestQueue:serializationQueue:interceptor:serverTrustManager:redirectHandler:cachedResponseHandler:eventMonitors:)
                `

Creates a Session from a URLSession and other parameters.

Note

When passing a URLSession, you must create the URLSession with a specific delegateQueue value and pass the delegateQueue‘s underlyingQueue as the rootQueue parameter of this initializer.

Declaration

Swift

public init(session: URLSession,
            delegate: SessionDelegate,
            rootQueue: DispatchQueue,
            startRequestsImmediately: Bool = true,
            requestSetup: RequestSetup = .lazy,
            requestQueue: DispatchQueue? = nil,
            serializationQueue: DispatchQueue? = nil,
            interceptor: (any RequestInterceptor)? = nil,
            serverTrustManager: ServerTrustManager? = nil,
            redirectHandler: (any RedirectHandler)? = nil,
            cachedResponseHandler: (any CachedResponseHandler)? = nil,
            eventMonitors: [any EventMonitor] = [AlamofireNotifications()])

Parameters

| session |

Underlying URLSession for this instance.

| | delegate |

SessionDelegate that handles session‘s delegate callbacks as well as Request interaction.

| | rootQueue |

Root DispatchQueue for all internal callbacks and state updates. MUST be a serial queue.

| | startRequestsImmediately |

Determines whether this instance will automatically start all Requests once a response handler is added. true by default. If set to false, all Requests created must have .resume() called to start.

| | requestSetup |

Determines when the Session will perform the internal setup for created Requests. .lazy by default.

| | requestQueue |

DispatchQueue on which to perform URLRequest creation. By default this queue will use the rootQueue as its target. A separate queue can be used if it’s determined request creation is a bottleneck, but that should only be done after careful testing and profiling. nil by default.

| | serializationQueue |

DispatchQueue on which to perform all response serialization. By default this queue will use the rootQueue as its target. A separate queue can be used if it’s determined response serialization is a bottleneck, but that should only be done after careful testing and profiling. nil by default.

| | interceptor |

RequestInterceptor to be used for all Requests created by this instance. nil by default.

| | serverTrustManager |

ServerTrustManager to be used for all trust evaluations by this instance. nil by default.

| | redirectHandler |

RedirectHandler to be used by all Requests created by this instance. nil by default.

| | cachedResponseHandler |

CachedResponseHandler to be used by all Requests created by this instance. nil by default.

| | eventMonitors |

EventMonitors used by the instance. [AlamofireNotifications()] by default.

|

`

                init(configuration:delegate:rootQueue:startRequestsImmediately:requestSetup:requestQueue:serializationQueue:interceptor:serverTrustManager:redirectHandler:cachedResponseHandler:eventMonitors:)
                `

Creates a Session from a URLSessionConfiguration.

Note

This initializer lets Alamofire handle the creation of the underlying URLSession and its delegateQueue, and is the recommended initializer for most uses.

Declaration

Swift

public convenience init(configuration: URLSessionConfiguration = URLSessionConfiguration.af.default,
                        delegate: SessionDelegate = SessionDelegate(),
                        rootQueue: DispatchQueue = DispatchQueue(label: "org.alamofire.session.rootQueue"),
                        startRequestsImmediately: Bool = true,
                        requestSetup: RequestSetup = .lazy,
                        requestQueue: DispatchQueue? = nil,
                        serializationQueue: DispatchQueue? = nil,
                        interceptor: (any RequestInterceptor)? = nil,
                        serverTrustManager: ServerTrustManager? = nil,
                        redirectHandler: (any RedirectHandler)? = nil,
                        cachedResponseHandler: (any CachedResponseHandler)? = nil,
                        eventMonitors: [any EventMonitor] = [AlamofireNotifications()])

Parameters

| configuration |

URLSessionConfiguration to be used to create the underlying URLSession. Changes to this value after being passed to this initializer will have no effect. URLSessionConfiguration.af.default by default.

| | delegate |

SessionDelegate that handles session‘s delegate callbacks as well as Request interaction. SessionDelegate() by default.

| | rootQueue |

Root DispatchQueue for all internal callbacks and state updates. MUST be a serial queue. DispatchQueue(label: "org.alamofire.session.rootQueue") by default.

| | startRequestsImmediately |

Determines whether this instance will automatically start all Requests once a response handler is added. true by default. If set to false, all Requests created must have .resume() called to start.

| | requestSetup |

Determines when the Session will perform the internal setup for created Requests. .lazy by default.

| | requestQueue |

DispatchQueue on which to perform URLRequest creation. By default this queue will use the rootQueue as its target. A separate queue can be used if it’s determined request creation is a bottleneck, but that should only be done after careful testing and profiling. nil by default.

| | serializationQueue |

DispatchQueue on which to perform all response serialization. By default this queue will use the rootQueue as its target. A separate queue can be used if it’s determined response serialization is a bottleneck, but that should only be done after careful testing and profiling. nil by default.

| | interceptor |

RequestInterceptor to be used for all Requests created by this instance. nil by default.

| | serverTrustManager |

ServerTrustManager to be used for all trust evaluations by this instance. nil by default.

| | redirectHandler |

RedirectHandler to be used by all Requests created by this instance. nil by default.

| | cachedResponseHandler |

CachedResponseHandler to be used by all Requests created by this instance. nil by default.

| | eventMonitors |

EventMonitors used by the instance. [AlamofireNotifications()] by default.

|

All Requests API

`

                withAllRequests(perform:)
                `

Perform an action on all active Requests.

Note

The provided action closure is performed asynchronously, meaning that some Requests may complete and be unavailable by time it runs. Additionally, this action is performed on the instances’s rootQueue, so care should be taken that actions are fast. Once the work on the Requests is complete, any additional work should be performed on another queue.

Declaration

Swift

public func withAllRequests(perform action: @escaping @Sendable (Set<Request>) -> Void)

Parameters

| action |

Closure to perform with all Requests.

|

`

                cancelAllRequests(completingOnQueue:completion:)
                `

Cancel all active Requests, optionally calling a completion handler when complete.

Note

This is an asynchronous operation and does not block the creation of future Requests. Cancelled Requests may not cancel immediately due internal work, and may not cancel at all if they are close to completion when cancelled.

Declaration

Swift

public func cancelAllRequests(completingOnQueue queue: DispatchQueue = .main, completion: (@Sendable () -> Void)? = nil)

Parameters

| queue |

DispatchQueue on which the completion handler is run. .main by default.

| | completion |

Closure to be called when all Requests have been cancelled.

|

DataRequest

`

                RequestModifier
                `

Closure which provides a URLRequest for mutation.

Declaration

Swift

public typealias RequestModifier = @Sendable (inout URLRequest) throws -> Void

`

                request(_:method:parameters:encoding:headers:interceptor:shouldAutomaticallyResume:requestModifier:)
                `

Creates a DataRequest from a URLRequest created using the passed components and a RequestInterceptor.

Declaration

Swift

open func request(_ convertible: any URLConvertible,
                  method: HTTPMethod = .get,
                  parameters: Parameters? = nil,
                  encoding: any ParameterEncoding = URLEncoding.default,
                  headers: HTTPHeaders? = nil,
                  interceptor: (any RequestInterceptor)? = nil,
                  shouldAutomaticallyResume: Bool? = nil,
                  requestModifier: RequestModifier? = nil) -> DataRequest

Parameters

| convertible |

URLConvertible value to be used as the URLRequest‘s URL.

| | method |

HTTPMethod for the URLRequest. .get by default.

| | parameters |

Parameters (a.k.a. [String: Any]) value to be encoded into the URLRequest. nil by default.

| | encoding |

ParameterEncoding to be used to encode the parameters value into the URLRequest. URLEncoding.default by default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DataRequest should resume after the first response handler is added.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

|

Return Value

The created DataRequest.

`

                request(_:method:parameters:encoder:headers:interceptor:shouldAutomaticallyResume:requestModifier:)
                `

Creates a DataRequest from a URLRequest created using the passed components, Encodable parameters, and a RequestInterceptor.

Declaration

Swift

open func request<Parameters: Encodable & Sendable>(_ convertible: any URLConvertible,
                                                    method: HTTPMethod = .get,
                                                    parameters: Parameters? = nil,
                                                    encoder: any ParameterEncoder = URLEncodedFormParameterEncoder.default,
                                                    headers: HTTPHeaders? = nil,
                                                    interceptor: (any RequestInterceptor)? = nil,
                                                    shouldAutomaticallyResume: Bool? = nil,
                                                    requestModifier: RequestModifier? = nil) -> DataRequest

Parameters

| convertible |

URLConvertible value to be used as the URLRequest‘s URL.

| | method |

HTTPMethod for the URLRequest. .get by default.

| | parameters |

Encodable value to be encoded into the URLRequest. nil by default.

| | encoder |

ParameterEncoder to be used to encode the parameters value into the URLRequest. URLEncodedFormParameterEncoder.default by default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DataRequest should resume after the first response handler is added.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

|

Return Value

The created DataRequest.

`

                request(_:interceptor:shouldAutomaticallyResume:)
                `

Creates a DataRequest from a URLRequestConvertible value and a RequestInterceptor.

Declaration

Swift

open func request(_ convertible: any URLRequestConvertible,
                  interceptor: (any RequestInterceptor)? = nil,
                  shouldAutomaticallyResume: Bool? = nil) -> DataRequest

Parameters

| convertible |

URLRequestConvertible value to be used to create the URLRequest.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DataRequest should resume after the first response handler is added.

|

Return Value

The created DataRequest.

DataStreamRequest

`

                streamRequest(_:method:parameters:encoder:headers:automaticallyCancelOnStreamError:interceptor:shouldAutomaticallyResume:requestModifier:)
                `

Creates a DataStreamRequest from the passed components, Encodable parameters, and RequestInterceptor.

Declaration

Swift

open func streamRequest<Parameters: Encodable & Sendable>(_ convertible: any URLConvertible,
                                                          method: HTTPMethod = .get,
                                                          parameters: Parameters? = nil,
                                                          encoder: any ParameterEncoder = URLEncodedFormParameterEncoder.default,
                                                          headers: HTTPHeaders? = nil,
                                                          automaticallyCancelOnStreamError: Bool = false,
                                                          interceptor: (any RequestInterceptor)? = nil,
                                                          shouldAutomaticallyResume: Bool? = nil,
                                                          requestModifier: RequestModifier? = nil) -> DataStreamRequest

Parameters

| convertible |

URLConvertible value to be used as the URLRequest‘s URL.

| | method |

HTTPMethod for the URLRequest. .get by default.

| | parameters |

Encodable value to be encoded into the URLRequest. nil by default.

| | encoder |

ParameterEncoder to be used to encode the parameters value into the URLRequest. URLEncodedFormParameterEncoder.default by default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | automaticallyCancelOnStreamError |

Bool indicating whether the instance should be canceled when an Error is thrown while serializing stream Data. false by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DataStreamRequest should resume after the first response handler is added.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

|

Return Value

The created DataStream request.

`

                streamRequest(_:method:headers:automaticallyCancelOnStreamError:interceptor:shouldAutomaticallyResume:requestModifier:)
                `

Creates a DataStreamRequest from the passed components and RequestInterceptor.

Declaration

Swift

open func streamRequest(_ convertible: any URLConvertible,
                        method: HTTPMethod = .get,
                        headers: HTTPHeaders? = nil,
                        automaticallyCancelOnStreamError: Bool = false,
                        interceptor: (any RequestInterceptor)? = nil,
                        shouldAutomaticallyResume: Bool? = nil,
                        requestModifier: RequestModifier? = nil) -> DataStreamRequest

Parameters

| convertible |

URLConvertible value to be used as the URLRequest‘s URL.

| | method |

HTTPMethod for the URLRequest. .get by default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | automaticallyCancelOnStreamError |

Bool indicating whether the instance should be canceled when an Error is thrown while serializing stream Data. false by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DataStreamRequest should resume after the first response handler is added.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

|

Return Value

The created DataStream request.

`

                streamRequest(_:automaticallyCancelOnStreamError:interceptor:shouldAutomaticallyResume:)
                `

Creates a DataStreamRequest from the passed URLRequestConvertible value and RequestInterceptor.

Declaration

Swift

open func streamRequest(_ convertible: any URLRequestConvertible,
                        automaticallyCancelOnStreamError: Bool = false,
                        interceptor: (any RequestInterceptor)? = nil,
                        shouldAutomaticallyResume: Bool? = nil) -> DataStreamRequest

Parameters

| convertible |

URLRequestConvertible value to be used to create the URLRequest.

| | automaticallyCancelOnStreamError |

Bool indicating whether the instance should be canceled when an Error is thrown while serializing stream Data. false by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DataStreamRequest should resume after the first response handler is added.

|

Return Value

The created DataStreamRequest.

DownloadRequest

`

                download(_:method:parameters:encoding:headers:interceptor:shouldAutomaticallyResume:requestModifier:to:)
                `

Creates a DownloadRequest using a URLRequest created using the passed components, RequestInterceptor, and Destination.

Declaration

Swift

open func download(_ convertible: any URLConvertible,
                   method: HTTPMethod = .get,
                   parameters: Parameters? = nil,
                   encoding: any ParameterEncoding = URLEncoding.default,
                   headers: HTTPHeaders? = nil,
                   interceptor: (any RequestInterceptor)? = nil,
                   shouldAutomaticallyResume: Bool? = nil,
                   requestModifier: RequestModifier? = nil,
                   to destination: DownloadRequest.Destination? = nil) -> DownloadRequest

Parameters

| convertible |

URLConvertible value to be used as the URLRequest‘s URL.

| | method |

HTTPMethod for the URLRequest. .get by default.

| | parameters |

Parameters (a.k.a. [String: Any]) value to be encoded into the URLRequest. nil by default.

| | encoding |

ParameterEncoding to be used to encode the parameters value into the URLRequest. Defaults to URLEncoding.default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DownloadRequest should resume after the first response handler is added.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

| | destination |

DownloadRequest.Destination closure used to determine how and where the downloaded file should be moved. nil by default.

|

Return Value

The created DownloadRequest.

`

                download(_:method:parameters:encoder:headers:interceptor:shouldAutomaticallyResume:requestModifier:to:)
                `

Creates a DownloadRequest from a URLRequest created using the passed components, Encodable parameters, and a RequestInterceptor.

Declaration

Swift

open func download<Parameters: Encodable & Sendable>(_ convertible: any URLConvertible,
                                                     method: HTTPMethod = .get,
                                                     parameters: Parameters? = nil,
                                                     encoder: any ParameterEncoder = URLEncodedFormParameterEncoder.default,
                                                     headers: HTTPHeaders? = nil,
                                                     interceptor: (any RequestInterceptor)? = nil,
                                                     shouldAutomaticallyResume: Bool? = nil,
                                                     requestModifier: RequestModifier? = nil,
                                                     to destination: DownloadRequest.Destination? = nil) -> DownloadRequest

Parameters

| convertible |

URLConvertible value to be used as the URLRequest‘s URL.

| | method |

HTTPMethod for the URLRequest. .get by default.

| | parameters |

Value conforming to Encodable to be encoded into the URLRequest. nil by default.

| | encoder |

ParameterEncoder to be used to encode the parameters value into the URLRequest. Defaults to URLEncodedFormParameterEncoder.default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DownloadRequest should resume after the first response handler is added.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

| | destination |

DownloadRequest.Destination closure used to determine how and where the downloaded file should be moved. nil by default.

|

Return Value

The created DownloadRequest.

`

                download(_:interceptor:shouldAutomaticallyResume:to:)
                `

Creates a DownloadRequest from a URLRequestConvertible value, a RequestInterceptor, and a Destination.

Declaration

Swift

open func download(_ convertible: any URLRequestConvertible,
                   interceptor: (any RequestInterceptor)? = nil,
                   shouldAutomaticallyResume: Bool? = nil,
                   to destination: DownloadRequest.Destination? = nil) -> DownloadRequest

Parameters

| convertible |

URLRequestConvertible value to be used to create the URLRequest.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DownloadRequest should resume after the first response handler is added.

| | destination |

DownloadRequest.Destination closure used to determine how and where the downloaded file should be moved. nil by default.

|

Return Value

The created DownloadRequest.

`

                download(resumingWith:interceptor:shouldAutomaticallyResume:to:)
                `

Creates a DownloadRequest from the resumeData produced from a previously cancelled DownloadRequest, as well as a RequestInterceptor, and a Destination.

Note

If destination is not specified, the download will be moved to a temporary location determined by Alamofire. The file will not be deleted until the system purges the temporary files.

Note

On some versions of all Apple platforms (iOS 10 - 10.2, macOS 10.12 - 10.12.2, tvOS 10 - 10.1, watchOS 3 - 3.1.1), resumeData is broken on background URL session configurations. There’s an underlying bug in the resumeData generation logic where the data is written incorrectly and will always fail to resume the download. For more information about the bug and possible workarounds, please refer to the this Stack Overflow post.

Declaration

Swift

open func download(resumingWith data: Data,
                   interceptor: (any RequestInterceptor)? = nil,
                   shouldAutomaticallyResume: Bool? = nil,
                   to destination: DownloadRequest.Destination? = nil) -> DownloadRequest

Parameters

| data |

The resume data from a previously cancelled DownloadRequest or URLSessionDownloadTask.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the DownloadRequest should resume after the first response handler is added.

| | destination |

DownloadRequest.Destination closure used to determine how and where the downloaded file should be moved. nil by default.

|

Return Value

The created DownloadRequest.

Data

`

                upload(_:to:method:headers:interceptor:shouldAutomaticallyResume:fileManager:requestModifier:)
                `

Creates an UploadRequest for the given Data, URLRequest components, and RequestInterceptor.

Declaration

Swift

open func upload(_ data: Data,
                 to convertible: any URLConvertible,
                 method: HTTPMethod = .post,
                 headers: HTTPHeaders? = nil,
                 interceptor: (any RequestInterceptor)? = nil,
                 shouldAutomaticallyResume: Bool? = nil,
                 fileManager: FileManager = .default,
                 requestModifier: RequestModifier? = nil) -> UploadRequest

Parameters

| data |

The Data to upload.

| | convertible |

URLConvertible value to be used as the URLRequest‘s URL.

| | method |

HTTPMethod for the URLRequest. .post by default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the UploadRequest should resume after the first response handler is added.

| | fileManager |

FileManager instance to be used by the returned UploadRequest. .default instance by default.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

|

Return Value

The created UploadRequest.

`

                upload(_:with:interceptor:shouldAutomaticallyResume:fileManager:)
                `

Creates an UploadRequest for the given Data using the URLRequestConvertible value and RequestInterceptor.

Declaration

Swift

open func upload(_ data: Data,
                 with convertible: any URLRequestConvertible,
                 interceptor: (any RequestInterceptor)? = nil,
                 shouldAutomaticallyResume: Bool? = nil,
                 fileManager: FileManager = .default) -> UploadRequest

Parameters

| data |

The Data to upload.

| | convertible |

URLRequestConvertible value to be used to create the URLRequest.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the UploadRequest should resume after the first response handler is added.

| | fileManager |

FileManager instance to be used by the returned UploadRequest. .default instance by default.

|

Return Value

The created UploadRequest.

File

`

                upload(_:to:method:headers:interceptor:shouldAutomaticallyResume:fileManager:requestModifier:)
                `

Creates an UploadRequest for the file at the given file URL, using a URLRequest from the provided components and RequestInterceptor.

Declaration

Swift

open func upload(_ fileURL: URL,
                 to convertible: any URLConvertible,
                 method: HTTPMethod = .post,
                 headers: HTTPHeaders? = nil,
                 interceptor: (any RequestInterceptor)? = nil,
                 shouldAutomaticallyResume: Bool? = nil,
                 fileManager: FileManager = .default,
                 requestModifier: RequestModifier? = nil) -> UploadRequest

Parameters

| fileURL |

The URL of the file to upload.

| | convertible |

URLConvertible value to be used as the URLRequest‘s URL.

| | method |

HTTPMethod for the URLRequest. .post by default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | interceptor |

RequestInterceptor value to be used by the returned UploadRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the UploadRequest should resume after the first response handler is added.

| | fileManager |

FileManager instance to be used by the returned UploadRequest. .default instance by default.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

|

Return Value

The created UploadRequest.

`

                upload(_:with:interceptor:shouldAutomaticallyResume:fileManager:)
                `

Creates an UploadRequest for the file at the given file URL using the URLRequestConvertible value and RequestInterceptor.

Declaration

Swift

open func upload(_ fileURL: URL,
                 with convertible: any URLRequestConvertible,
                 interceptor: (any RequestInterceptor)? = nil,
                 shouldAutomaticallyResume: Bool? = nil,
                 fileManager: FileManager = .default) -> UploadRequest

Parameters

| fileURL |

The URL of the file to upload.

| | convertible |

URLRequestConvertible value to be used to create the URLRequest.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the UploadRequest should resume after the first response handler is added.

| | fileManager |

FileManager instance to be used by the returned UploadRequest. .default instance by default.

|

Return Value

The created UploadRequest.

InputStream

`

                upload(_:to:method:headers:interceptor:fileManager:requestModifier:)
                `

Creates an UploadRequest from the InputStream provided using a URLRequest from the provided components and RequestInterceptor.

Declaration

Swift

open func upload(_ stream: InputStream,
                 to convertible: any URLConvertible,
                 method: HTTPMethod = .post,
                 headers: HTTPHeaders? = nil,
                 interceptor: (any RequestInterceptor)? = nil,
                 fileManager: FileManager = .default,
                 requestModifier: RequestModifier? = nil) -> UploadRequest

Parameters

| stream |

The InputStream that provides the data to upload.

| | convertible |

URLConvertible value to be used as the URLRequest‘s URL.

| | method |

HTTPMethod for the URLRequest. .post by default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the UploadRequest should resume after the first response handler is added.

| | fileManager |

FileManager instance to be used by the returned UploadRequest. .default instance by default.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

|

Return Value

The created UploadRequest.

`

                upload(_:with:interceptor:shouldAutomaticallyResume:fileManager:)
                `

Creates an UploadRequest from the provided InputStream using the URLRequestConvertible value and RequestInterceptor.

Declaration

Swift

open func upload(_ stream: InputStream,
                 with convertible: any URLRequestConvertible,
                 interceptor: (any RequestInterceptor)? = nil,
                 shouldAutomaticallyResume: Bool? = nil,
                 fileManager: FileManager = .default) -> UploadRequest

Parameters

| stream |

The InputStream that provides the data to upload.

| | convertible |

URLRequestConvertible value to be used to create the URLRequest.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | shouldAutomaticallyResume |

Whether the UploadRequest should resume after the first response handler is added.

| | fileManager |

FileManager instance to be used by the returned UploadRequest. .default instance by default.

|

Return Value

The created UploadRequest.

MultipartFormData

`

                upload(multipartFormData:to:usingThreshold:method:headers:interceptor:fileManager:requestModifier:)
                `

Creates an UploadRequest for the multipart form data built using a closure and sent using the provided URLRequest components and RequestInterceptor.

It is important to understand the memory implications of uploading MultipartFormData. If the cumulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.

The encodingMemoryThreshold parameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of the MultipartFormData is below the encodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.

Declaration

Swift

open func upload(multipartFormData: @escaping (MultipartFormData) -> Void,
                 to url: any URLConvertible,
                 usingThreshold encodingMemoryThreshold: UInt64 = MultipartFormData.encodingMemoryThreshold,
                 method: HTTPMethod = .post,
                 headers: HTTPHeaders? = nil,
                 interceptor: (any RequestInterceptor)? = nil,
                 fileManager: FileManager = .default,
                 requestModifier: RequestModifier? = nil) -> UploadRequest

Parameters

| multipartFormData |

MultipartFormData building closure.

| | url |

URLConvertible value to be used as the URLRequest‘s URL.

| | encodingMemoryThreshold |

Byte threshold used to determine whether the form data is encoded into memory or onto disk before being uploaded. MultipartFormData.encodingMemoryThreshold by default.

| | method |

HTTPMethod for the URLRequest. .post by default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | fileManager |

FileManager to be used if the form data exceeds the memory threshold and is written to disk before being uploaded. .default instance by default.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

|

Return Value

The created UploadRequest.

`

                upload(multipartFormData:with:usingThreshold:interceptor:fileManager:)
                `

Creates an UploadRequest using a MultipartFormData building closure, the provided URLRequestConvertible value, and a RequestInterceptor.

It is important to understand the memory implications of uploading MultipartFormData. If the cumulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.

The encodingMemoryThreshold parameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of the MultipartFormData is below the encodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.

Declaration

Swift

open func upload(multipartFormData: @escaping (MultipartFormData) -> Void,
                 with request: any URLRequestConvertible,
                 usingThreshold encodingMemoryThreshold: UInt64 = MultipartFormData.encodingMemoryThreshold,
                 interceptor: (any RequestInterceptor)? = nil,
                 fileManager: FileManager = .default) -> UploadRequest

Parameters

| multipartFormData |

MultipartFormData building closure.

| | request |

URLRequestConvertible value to be used to create the URLRequest.

| | encodingMemoryThreshold |

Byte threshold used to determine whether the form data is encoded into memory or onto disk before being uploaded. MultipartFormData.encodingMemoryThreshold by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | fileManager |

FileManager to be used if the form data exceeds the memory threshold and is written to disk before being uploaded. .default instance by default.

|

Return Value

The created UploadRequest.

`

                upload(multipartFormData:to:usingThreshold:method:headers:interceptor:shouldAutomaticallyResume:fileManager:requestModifier:)
                `

Creates an UploadRequest for the prebuilt MultipartFormData value using the provided URLRequest components and RequestInterceptor.

It is important to understand the memory implications of uploading MultipartFormData. If the cumulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.

The encodingMemoryThreshold parameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of the MultipartFormData is below the encodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.

Declaration

Swift

open func upload(multipartFormData: MultipartFormData,
                 to url: any URLConvertible,
                 usingThreshold encodingMemoryThreshold: UInt64 = MultipartFormData.encodingMemoryThreshold,
                 method: HTTPMethod = .post,
                 headers: HTTPHeaders? = nil,
                 interceptor: (any RequestInterceptor)? = nil,
                 shouldAutomaticallyResume: Bool? = nil,
                 fileManager: FileManager = .default,
                 requestModifier: RequestModifier? = nil) -> UploadRequest

Parameters

| multipartFormData |

MultipartFormData instance to upload.

| | url |

URLConvertible value to be used as the URLRequest‘s URL.

| | encodingMemoryThreshold |

Byte threshold used to determine whether the form data is encoded into memory or onto disk before being uploaded. MultipartFormData.encodingMemoryThreshold by default.

| | method |

HTTPMethod for the URLRequest. .post by default.

| | headers |

HTTPHeaders value to be added to the URLRequest. nil by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | fileManager |

FileManager to be used if the form data exceeds the memory threshold and is written to disk before being uploaded. .default instance by default.

| | requestModifier |

RequestModifier which will be applied to the URLRequest created from the provided parameters. nil by default.

|

Return Value

The created UploadRequest.

`

                upload(multipartFormData:with:usingThreshold:interceptor:shouldAutomaticallyResume:fileManager:)
                `

Creates an UploadRequest for the prebuilt MultipartFormData value using the providing URLRequestConvertible value and RequestInterceptor.

It is important to understand the memory implications of uploading MultipartFormData. If the cumulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.

The encodingMemoryThreshold parameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of the MultipartFormData is below the encodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.

Declaration

Swift

open func upload(multipartFormData: MultipartFormData,
                 with request: any URLRequestConvertible,
                 usingThreshold encodingMemoryThreshold: UInt64 = MultipartFormData.encodingMemoryThreshold,
                 interceptor: (any RequestInterceptor)? = nil,
                 shouldAutomaticallyResume: Bool? = nil,
                 fileManager: FileManager = .default) -> UploadRequest

Parameters

| multipartFormData |

MultipartFormData instance to upload.

| | request |

URLRequestConvertible value to be used to create the URLRequest.

| | encodingMemoryThreshold |

Byte threshold used to determine whether the form data is encoded into memory or onto disk before being uploaded. MultipartFormData.encodingMemoryThreshold by default.

| | interceptor |

RequestInterceptor value to be used by the returned DataRequest. nil by default.

| | fileManager |

FileManager instance to be used by the returned UploadRequest. .default instance by default.

|

Return Value

The created UploadRequest.

RequestDelegate

`

                sessionConfiguration
                `

Declaration

Swift

public var sessionConfiguration: URLSessionConfiguration { get }

`

                startImmediately
                `

Declaration

Swift

public var startImmediately: Bool { get }

`

                readyToPerform(request:)
                `

Undocumented

Declaration

Swift

public func readyToPerform(request: Request)

`

                cleanup(after:)
                `

Declaration

Swift

public func cleanup(after request: Request)

`

                retryResult(for:dueTo:completion:)
                `

Declaration

Swift

public func retryResult(for request: Request, dueTo error: AFError, completion: @escaping @Sendable (RetryResult) -> Void)

`

                retryRequest(_:withDelay:)
                `

Declaration

Swift

public func retryRequest(_ request: Request, withDelay timeDelay: TimeInterval?)