A lightweight Swift package for interacting concurrently with RESTful web APIs using declarative endpoint specifications and returning decoded Codable types, with support for pagination, rate limiting, and more
- 🪶 Lightweight: Relativly simple implementation with no main target dependencies
- 🚸 Swift Concurrency: Uses
async/awaitand actors for thread-safe operations - 📋 Declarative: The configuration specific to each call is passed as declaratively as value types
- 🦺 Type-Safe: Leverages Swift's
Codablefor automatic JSON parsing - 📑 Pagination Support: Stream multi-page responses with
AsyncThrowingStream - 🚦 Automatic Rate Limiting: Respects API rate limits based on response headers
- 💾 Caching: Built-in URLCache support with configurable intervals
- 🧪 Testable: Protocol-based design for easy mocking
- iOS 15.0+ / macOS 12.0+
- Swift 6.0+
- Xcode 14.0+
To jump right in, see the Quick Start Guide.
The full documentation is here: Interchange.
Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
Carl Sheppard - Antarian Logic LLC
- Uses Mocker for testing
- 📫 Report issues on GitHub Issues
- 💬 Ask questions in GitHub Discussions
- ⭐ Star the repo if you find it useful!