6. Apollo Explorer
5m

🚀 Exploring our first query

All right! Our schema is properly loaded and our is running on port 4000. Now it's time to put our server to the test and see if we can for the track data we need for our homepage grid feature.

To write our test , we'll use Apollo Explorer. The Explorer is free to use, and it provides awesome development features like interactive building, query history, and response hints. This will make building our queries fast and fun.

Since we're still in the local development stage of building our , we'll start by opening the Explorer in Apollo Sandbox. Sandbox is a special mode of that lets you test your local graph changes before deploying them.

Note: To learn how to deploy your app to production, check out Side Quest: Deploying an Apollo app with Railway

To open the Explorer in , you can cmd+click on the URL in your terminal (from starting the server) to open it in your browser, or you can open it here: http://localhost:4000.

Exploring the Explorer

In the browser, we can see Sandbox with Explorer open and connected to localhost:4000. It should look something like this:

http://localhost:4000
A screenshot of the Explorer interface in Apollo Sandbox. The UI has three main columns: Documentation, Operation, and Response.

The Operation panel in the middle is where we create queries. The Explorer has already filled in a default that uses our tracksForHome ! You can edit the directly or add from the Documentation tab (more on this below).

At the top of the Operation panel is the button to run our . Let's click it now and see what happens:

http://localhost:4000
A screenshot of the Explorer interface after a query has been run. The Response panel now shows the JSON object for the data returned by the server.

The Response panel on the right displays our list of track IDs. Sweet!

Building a query

The Explorer's Documentation tab enables you to drill down into your schema's , starting at the entry points of the Query type.

http://localhost:4000
A screenshot of the Explorer interface. The Documentation panel shows a list of possible fields to include in the query.

When you click on a , you can see the description we added, along with the field's subfields (if it has any).

http://localhost:4000
A screenshot of the Explorer interface, with focus on the title field and its description

Clicking on the plus () button next to a automatically adds that field to the in the Operation panel. This is a handy way to assemble complex queries without needing to remember your schema's exact structure.

Let's add the title to our and run it again. You'll see the updated response in the Response panel.

http://localhost:4000
A screenshot of the Explorer interface, with the title field added to the query and response data populated.

Adding all fields

Right now, we've selected only the id and title , but the Explorer also has a way to add all fields to an at once. When we click the dropdown by the Fields subheading, we'll see that we have two options.

http://localhost:4000
Opening the Fields dropdown to see options to add all fields to a query in Apollo Explorer

First, we have the option to Select all scalar fields. This will select all of the on the tracksForHome type that return a value that does not have additional sub.

Click Select all scalar fields. We'll see the thumbnail, length and modulesCount have been added to our .

http://localhost:4000
The Explorer, showing the new scalar fields that were added to our query

All of our are taken care of, but we'll notice that the author was not added. This is because the author does not return a type - it returns an with additional subfields! Fortunately, there's another option in Explorer that will add all fields at once, whether they return a scalar or object type. Let's click the dropdown by the Fields subheading again.

The second option in this dropdown is to Select all fields recursively. This means that in addition to adding all to our , we can include fields that return an , along with all of the object type's subfields! Let's see what this looks like in practice.

http://localhost:4000
The Fields dropdown, showing the option to select all fields recursively

When we click Select all fields recursively, the updates.

http://localhost:4000
The Explorer, showing that all fields have been added recursively to our query

We can see that the author has been included in the , along with all of its subfields: id, name and photo. By adding all recursively, we're able to include all the subfields of the Author type without having to select them one-by-one.

Running the query

While we're here, let's rename our from ExampleQuery to GetTracks so it's more obvious what it's for. Your completed should match the following:

query GetTracks {
tracksForHome {
id
title
thumbnail
length
modulesCount
author {
id
name
photo
}
}
}
Task!

Notice that the 's response looks exactly like the data we need to populate the grid on our homepage: nothing extra and nothing missing, all in a single call. A REST API would probably have required us to make multiple calls to fetch each author by their ID.

Code Challenge!

Run the above query in Explorer against your local server and the mocks defined in the previous lesson. In Explorer's response section: copy the first Track entry of the tracksForHome array and paste it below (not including the trailing comma)

Loading...
Loading progress

Saving an operation

We'll be using the GetTracks in a future lesson, so let's take advantage of another Explorer feature that makes this easier.

At the top of the Operation panel, we'll find a save icon button.

http://localhost:4000
A screenshot highlighting the save button at the top of the Operation panel in Explorer, opened to the 'Save as' option

Clicking the Save as option from the dropdown opens a modal where we can give our a name, and save it to an operation collection.

With a collection, we can store a group of in a place that's quick to access when we want to test future changes to our schema.

Let's start by giving our the name TracksForHome so that we can locate it when we need it again. Next, in the Select a collection dropdown, let's select the option under Sandbox to create a new default collection.

http://localhost:4000
The Save Operation modal, with fields to name an operation and store it in a new default Sandbox collection

After we click the Save button, we'll see that our 's tab now has the name we assigned to it! Additionally, we'll see a bookmark icon that indicates that this operation is saved to a collection.

http://localhost:4000
Explorer showing the named Operation tab and bookmark icon

We can use the panel on the left of the Explorer to access that we've saved to a collection. Clicking the bookmark icon at the top of the menu opens up all of our Operation Collections, where we can see our TracksForHome has been saved for quick access!

http://localhost:4000
Opening the Operation Collections panel to access a saved operation

The Explorer can do so much more, but this is all we'll cover for now. With our defined, it's time to take care of building out our frontend app.

Which of these are benefits of using the GraphOS Studio Explorer?
Previous

Share your questions and comments about this lesson

Your feedback helps us improve! If you're stuck or confused, let us know and we'll help you out. All comments are public and must follow the Apollo Code of Conduct. Note that comments that have been resolved or addressed may be removed.

You'll need a GitHub account to post below. Don't have one? Post in our Odyssey forum instead.