Even though there is nothing inherently wrong with a view model performing network requests, it isn't an approach I recommend. Moving the networking logic out of the view model has a number of benefits. It reduces code duplication, facilitates unit testing, and improves the maintainability of the project to name a few.
Subscribe to Cocoacasts Plus to watch this episode.
Building a Modern Networking Layer in Swift
Creating an API Client
by Bart Jacobs in Networking
Swift 5
Xcode 13
iOS 15
Building a Modern Networking Layer in Swift
- 
      
      
06:30
 
- 
      
      
08:01
 
- 
      
      
09:24
 
- 
      
4 Creating an API Client
09:27
 
- 
      
5 Making the API Client Extensible
08:04
 
- 
      
      
10:07
 
- 
      
      
08:16
 
- 
      
8 Working with Protected Resources
10:07
 
- 
      
      
09:55
 
- 
      
      
09:49
 
- 
      
12 Creating and Updating Video Progress
06:40
 
- 
      
      
07:57
 
- 
      
14 Unit Testing the Networking Layer
10:32
 
- 
      
15 Unit Testing Asynchronous Code
07:45
 
- 
      
16 Stubbing the Cocoacasts API
08:42
 
- 
      
18 Enabling Code Coverage to Find Gaps
07:10
 
- 
      
20 Writing the Wrong Unit Tests
11:55
 
- 
      
21 Writing Unit Tests for Edge Cases
08:25
 
- 
      
22 Catching Bugs with Unit Tests
11:05
 
- 
      
      
11:04