Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
Now that we understand how our API works, we will use Retrofit to interact with it.
Retrofit: enables us to create readable Java interfaces and classes that match the API we are accessing, as well as allowing us to interact with simple Java objects instead of having to parse network responses manually
Bring in Retrofit to your API
compile 'com.squareup.retrofit:retrofit:1.9.0'
Now that we know how the API works,
let's use Retrofit to interact with it.
0:00
Retrofit uses interfaces to represent
the API we are connecting to.
0:05
Let's start by creating a new Interface.
0:09
Here in my API package, I'm just
going to create a new Java Class and
0:11
the type is going to be Interface.
0:16
I'm just gonna call it Api.
0:19
Next, we're going to add a method for
each API call.
0:21
The API we're using returns back
active listings from Etsy, so
0:24
I'm gonna call mine activeListings.
0:28
Now, Retrofit can be a little overwhelming
when you're first learning how to use it,
0:32
but it has an elegant syntax that
helps us understand what it's doing.
0:36
And, it does a lot of work for us,
with only a little bit of code.
0:40
Retro fit uses annotations to
tell it where the URI is and
0:44
what HTTP protocol to use.
0:48
From the documentation earlier,
we know our protocol is get and
0:51
the URI is slash listing slash active.
0:55
Let's go ahead and annotate our method
using the available retro fit annotations.
0:58
It's gonna ask us to import those as we
would any other class or object type.
1:03
And, we also need to include
a string that represents the URI,
1:08
which is /listings/active.
1:12
To include URL parameters,
1:14
we can include those as optional
parameters in the active listings method.
1:18
I'm gonna annotate mine as Query,
and I'm gonna give it a name.
1:23
The name is includes.
1:27
So, the includes was the image and
1:29
shop data that was coming through
the API with our listings call.
1:31
We need to make sure we
import those as well.
1:35
And, we need to give this
a name as a variable.
1:40
Just gonna call it includes.
1:44
Finally, we need to include a callback.
1:46
Notice that the type of
this method is void.
1:48
That means it's going to callback
immediately once you call it.
1:50
But, we need to include a callback
which when the response happens and
1:53
completes, we'll get a callback
on the main UI thread.
1:57
Retrofit includes a class called Callback.
2:00
The callback mechanism is just like what
we used in the weather app using OkHttp in
2:03
an earlier course.
2:07
This callback is gonna be typed to the
Java class that the network response will
2:09
be converted into by Retrofit.
2:13
This means that Retrofit automatically
parses the network response, and
2:15
creates an object of the type you want,
with all the data set on it.
2:18
All you have to do is give it
the class that corresponds to
2:22
the response from the API.
2:25
In this case, we wanna go ahead and
use the ActiveListings class.
2:27
Again, we wanna go ahead and import this.
2:31
Great.
2:34
Our API is all set up now.
2:35
Next, we're going to
add to our Etsy class.
2:37
We're gonna add a method to retrieve
back an instance of the API interface we
2:40
just built.
2:43
We're gonna open the Etsy class,
let's go ahead and add a method in here.
2:45
Private, static.
2:49
And, it's gonna return back
the API we just built.
2:50
And, I'm gonna call it getApi.
2:54
We're going to use
the included RestAdapter class
2:55
that's a part of Retrofit.
2:59
RestAdapter has a builder
that's a part of it,
3:01
so we're gonna say new
RestAdapter.Builder, and
3:04
with the builder pattern we can easily
configure it with any options we need.
3:07
The first we're gonna do
is set the end point.
3:11
So, from the Etsy documentation,
3:14
we know the endpoint is
https://openapi.etsy.com/v2.
3:17
Once we set the end point,
we can just call .build and then .create.
3:23
And, when you call .create
what you're gonna do
3:30
is pass in the interface that you
wanted to create an object from.
3:33
So we're gonna pass in the Api class.
3:37
Now, this going to return back an instance
of Api with the end point set to it.
3:40
One thing we might've noticed is
that we haven't set up the API
3:46
key anywhere in the request.
3:49
We can do this by adding in a request
interceptor which allows us to
3:50
append a parameter at the end of the
request after it's initially created, so
3:55
let's go ahead and
make a method that will do this.
3:59
I'm going to create another method and
4:01
it's going to return back
a request interceptor.
4:03
Just gonna call it getInterceptor.
4:07
And, it's gonna return back
a new request interceptor.
4:13
What I'm gonna do is just add
in the parameter that I need,
4:17
my API key with every request.
4:20
So, I'm gonna take the request and
just say addEncodedQueryParameter.
4:23
And, the name of it is api key.
4:28
And, we started here in this
value of capital API KEY.
4:31
We just append it there.
4:35
Finally, back in our builder,
4:38
we can call into setRequestInterceptor and
call getInterceptor.
4:40
You need to sign up for Treehouse in order to download course files.
Sign up