6. Apollo Explorer
5m

🚀 Exploring our first query

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

To write our test query, we'll use Apollo Explorer. The is free to use, and it provides awesome development features like interactive query 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 graph, we'll start by opening the in Apollo Sandbox. Sandbox is a special mode of Apollo Studio 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 in Apollo Sandbox, 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 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 has already filled in a default that uses our tracksForHome query! You can edit the directly or add s from the Documentation tab (more on this below).

At the top of the Operation panel is the button to run our query. 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 's Documentation tab enables you to drill down into your 's 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 query in the Operation panel. This is a handy way to assemble complex queries without needing to remember your 's exact structure.

Let's add the title to our query 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 s, but the 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 s on the tracksForHome type that return a value that does not have additional subs.

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

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

All of our s 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 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 s 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 query 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 query, along with all of its subfields: id, name and photo. By adding all s 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 query'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 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 s in a place that's quick to access when we want to test future changes to our .

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 to access s 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 can do so much more, but this is all we'll cover for now. With our query defined, it's time to take care of building out our frontend app.

Which of these are benefits of using the Apollo 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.