# Alamofire — Elegant HTTP Networking in Swift > A Swift-based HTTP networking library that simplifies common networking tasks like requests, response handling, and authentication for iOS and macOS apps. ## Install Save as a script file and run: # Alamofire — Elegant HTTP Networking in Swift ## Quick Use ```swift import Alamofire AF.request("https://api.example.com/data").responseDecodable(of: MyModel.self) { response in print(response.value) } ``` ## Introduction Alamofire is a Swift-based HTTP networking library built on top of Apple's URLSession. It provides a clean, chainable API for making network requests, handling responses, and managing authentication in iOS, macOS, watchOS, and tvOS applications. ## What Alamofire Does - Simplifies HTTP request creation with a chainable, expressive API - Handles JSON, Decodable, and custom response serialization automatically - Manages request and response interceptors for auth token refresh - Provides upload and download progress tracking with resume support - Offers built-in network reachability monitoring and request retrying ## Architecture Overview Alamofire wraps URLSession into a layered architecture: Session manages configuration and request creation, Request objects track lifecycle and state, and ResponseSerializer protocols handle data transformation. Interceptors (RequestAdapter and RequestRetrier) form a middleware chain for authentication and retry logic. ## Self-Hosting & Configuration - Install via Swift Package Manager: add the Alamofire repository URL to your Xcode project - Alternatively use CocoaPods: `pod 'Alamofire', '~> 5.9'` - Configure a custom Session with ServerTrustManager for SSL pinning - Set default headers and timeout intervals through URLSessionConfiguration - Use EventMonitor protocol to log all request and response activity ## Key Features - Type-safe request building with URLRequestConvertible protocol - Automatic retry with configurable backoff via RequestRetrier - Multipart form data upload with streaming from disk - Certificate pinning and server trust evaluation out of the box - Combine and async/await support for modern Swift concurrency ## Comparison with Similar Tools - **URLSession** — lower-level with more boilerplate; Alamofire adds convenience and retry logic - **Moya** — builds on Alamofire with an enum-based target abstraction layer - **AsyncHTTPClient (Swift NIO)** — server-side focused; Alamofire targets Apple platforms - **Axios (JS)** — similar chainable API philosophy but for the JavaScript ecosystem ## FAQ **Q: Does Alamofire support async/await?** A: Yes, starting from version 5.5 it provides native async/await APIs alongside completion handlers. **Q: Can I use Alamofire for file uploads?** A: Yes, it supports multipart form uploads, file streaming, and progress tracking natively. **Q: Is Alamofire still maintained?** A: Yes, it is actively maintained with regular releases supporting the latest Swift and Xcode versions. **Q: How does Alamofire handle authentication?** A: Through RequestInterceptor protocol which combines RequestAdapter (adds tokens) and RequestRetrier (refreshes expired tokens automatically). ## Sources - https://github.com/Alamofire/Alamofire - https://alamofire.github.io/Alamofire/ --- Source: https://tokrepo.com/en/workflows/asset-7958ea7d Author: Script Depot