EZNetworking is a powerful, lightweight Swift networking library that simplifies API interactions in your iOS applications. Built with modern Swift features, it provides an intuitive interface for making HTTP requests, handling responses, and managing network operations.
- Modern Swift Support: Built with Swift 5.9 and iOS 15.0+, macOS 12+, watchOS 8+, tvOS 15+, visionOS 1+
- Async/Await Integration: First-class support for Swift concurrency
- Combine Support: Publishers for requests, downloads, uploads, WebSocket, and SSE
- Callback Support: Completion handler-based API across the board
- AsyncStream Support: Streaming progress for uploads, downloads, and real-time events
- Type-Safe Networking: Strong typing for requests and responses
- Flexible Request Building: Multiple approaches to creating requests
- Comprehensive Interceptors: Full request/response pipeline control
- Built-in Caching: Efficient response caching system
- File Download: Easy-to-use file downloader
- File Upload: Easy-to-use file uploader
- Data Upload: Easy-to-use data uploader
- Multipart Form Data: Construct multipart requests with boundary handling and MIME types
- WebSocket: Real-time, bi-directional client-to-server communication
- Server-Sent Events: Lightweight, server-to-client streaming with automatic reconnection
- Extensive Testing: 100% unit test coverage
- Installation
- Quick Start Guide
- Usage
- HTTP Components - HTTP Method, HTTP Query Parameter, HTTP Header, HTTP Body, Timeout, Cache
- How to make a request - RequestFactory, RequestBuilder, Request protocol
- How to perform a request - Performing a Request, Error handling
- Large Data - File Download, Data Upload, File Upload, Multipart-form Upload
- Live Communication - server-sent-event, websocket
- Session Management - Session, SessionDelegate, Interceptors
- Scripts
- Contributing
- License
Add EZNetworking to your project using Swift Package Manager:
dependencies: [
.package(url: "https://github.com/Aldo10012/EZNetworking.git", from: "5.2.0")
]Or through Xcode:
- Go to File > Add Packages
- Enter:
https://github.com/Aldo10012/EZNetworking.git - Select version: 5.2.0 or later
Here's a simple example to get you started:
// Create a request
let request = RequestFactoryImpl().build(
httpMethod: .GET,
urlString: "https://api.example.com/data",
parameters: [.init(key: "userId", value: "123")]
)
// Using async/await
do {
let response = try await RequestPerformer().perform(
request: request,
decodeTo: UserData.self
)
print("User data: \(response)")
} catch {
print("Error: \(error)")
}swiftformat Sources Tests
- Automatically formats the Swift code according to the rules defined in .swiftformat configuration file.
swiftlint Sources Tests
- Analyzes the Swift code and reports violations of the rules defined in .swiftlint.yaml configuration file.
swiftlint --fix Sources Tests
- Automatically fixes auto-correctable SwiftLint violations in the code.
Contributions to are always welcomed! For more details see CONTRIBUTING.md.
EZNetworking is available under the MIT license. See the LICENSE file for more info.