6. Apollo Explorer5m

🚀 Exploring our first query

All right! Our schema 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 Explorer 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 Explorer in Apollo Sandbox. Sandbox is a special mode of Apollo Studio that lets you test your local graph changes before deploying them.

Note: We'll talk more about how to deploy your graph in Lift-off V: Production and the Schema Registry.

To open the Explorer 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 that our server is running successfully, with a message inviting us to query it. Let's click Query your server to see our graph in action with Apollo Sandbox.

A screenshot of the landing page with a button prompting to query the server using Sandbox.

When we arrive in the Sandbox Explorer, it should look something like this:

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 operation that uses our tracksForHome query! You can edit the operation directly or add fields 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:

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 fields, starting at the entry points of the Query type.

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 field, you can see the description we added, along with the field's subfields (if it has any).

A screenshot of the Explorer interface, with focus on the title field and its description

Clicking on the plus () button next to a field 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 schema's exact structure.

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

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 fields, but the Explorer also has a way to add all fields to an operation at once. When we click the three dots button by the Fields subheading, we'll see that we have two options.

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 fields on the tracksForHome type that return a value that does not have additional subfields.

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

The Explorer, showing the new scalar fields that were added to our query

All of our scalar fields are taken care of, but we'll notice that the author field was not added. This is because the author field does not return a scalar type - it returns an object type 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 three dots 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 scalar fields to our operation, we can include fields that return an object type, along with all of the object type's subfields! Let's see what this looks like in practice.

The Fields dropdown, showing the option to select all fields recursively

When we click Select all fields recursively, the query updates.

The Explorer, showing that all fields have been added recursively to our query

We can see that the author field has been included in the query, along with all of its subfields: id, name and photo. By adding all fields 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 operation from ExampleQuery to GetTracks so it's more obvious what it's for. Your completed operation should match the following:

query GetTracks {
tracksForHome {
author {

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)

Saving an operation

We'll be using the GetTracks operation 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.

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 operation a name, and save it to an operation collection.

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

Let's start by giving our operation 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.

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 operation'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.

Explorer showing the named Operation tab and bookmark icon

We can use the panel on the left of the Explorer to access operations 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 operation has been saved for quick access!

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 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?