5. Execute your first query
To use the generated operations in RocketReserverAPI, you first create an instance of ApolloClient. This instance takes your generated code and uses it to make network calls to your server. It's recommended that this instance is a singleton or static instance that's accessible from anywhere in your codebase.
Create an ApolloClient
Create a new Swift file within
RocketReservercalledNetwork.swift. Set the target toRocketReserverand addimport Apolloto the top of the file.Now add the following code into the file:
1class Network {
2 static let shared = Network()
3
4 private(set) lazy var apollo = ApolloClient(url: URL(string: "https://apollo-fullstack-tutorial.herokuapp.com/graphql")!)
5}Implement the query
To make sure your ApolloClient instance is communicating correctly with the server, go to LaunchListViewModel, add these imports, then add the following code to the init() method just below the TODO:
1import Apollo
2import RocketReserverAPI
3
4...
5
6init() {
7 // TODO (Section 13 - https://www.apollographql.com/docs/ios/tutorial/tutorial-subscriptions#use-your-subscription)
8 Network.shared.apollo.fetch(query: LaunchListQuery()) { result in
9 switch result {
10 case .success(let graphQLResult):
11 print("Success! Result: \(graphQLResult)")
12 case .failure(let error):
13 print("Failure! Error: \(error)")
14 }
15 }
16}Test your query
Build and run your application. The web host might take a few seconds to spin up your GraphQL server if nobody's been using it recently, but once it's up, you should see a response that resembles the following:
This means the request was correctly executed and you now have a list of launch sites 🚀🚀🚀.
Go ahead and remove the code added to the init() method so there is just the TODO for later:
1init() {
2 // TODO (Section 13 - https://www.apollographql.com/docs/ios/tutorial/tutorial-subscriptions#use-your-subscription)
3}Next, let's connect this data to your UI