Adding Digitransit API GraphQL to an Swift project
This is a step by step instructions on how to add GraphQL API of Finnish public transportation information to a Swift project in Xcode. This is mostly for my own future reference and collected from more verbose post in Medium Using GraphQL in iOS with Swift - Better Programming - Medium.
(as of writing instructions are valid for Swift 5.1 and Xcode 11)
Step 0: prerequisites:
Install apollo npm toolchain for generating the schema file npm install -g npm
Step 1: Create an Xcode project
Nothing special here.
Step 2: Install Apollo framework dependency for your project
All in detail at Apollo documentation Installation - Client (iOS) - Apollo GraphQL Docs
Step 3: Generate GraphQL schema.json
Run the apollo tool you installed in step 0 to generate the schema.json to be used for generating the datatypes
apollo schema:download –endpoint=api.digitransit.fi/routing/v…
Step 3.1: Add schema.json to XCode project
Nothing weird here
Step 4: Add a Code Generation Step
As documented here: Installation - Client (iOS) - Apollo GraphQL Docs
Step 5: Add .graphql queries to project
Next step is to add .graphql file to your project. Digitransit has an excellent documentation and a sandbox for trying things out
Digitransit documentation for stop arrival information Stops | Digitransit has convenient links to sandbox for testing the API out
Step 6: (Re-)Generate API.swift file when needed
Finally, one runs the build to generate the API.swift file that contains the types of the queries you created. Everytime you add a new type, rerun the build to generate new API.swift