U4LA3.1: APIs vs SDKs
How do you integrate other people's software into yours?
Teacher Notes && Overview
In this lesson, students will integrate the Giphy SDK into a web app. You should familiarize yourself with the SDK through the exemplar and the documentation. Pay special attention to the API key sign-up process, which is likely to evolve over time and trip up students. If you've already done the closed API lesson, you can either reuse the key for simplicity or have them create an additional key to demonstrate keeping keys for different apps separate.
Note that the sample code is not raw HTML/CSS/JS, but needs to be bundled with Parcel to run. All of this is already scripted; the npm start
command will bundle and host the app automatically, as well as live-reload on changes. The need for Parcel (and the unusual code in the index.html
file) comes from the Giphy SDK being delivered as a Node module. It's not important to the lesson to understand how this works, so feel free to skim over it with the students. Note: Replit should automatically run npm install
upon the first Run to install the dependencies, but if you're running the repo independently you'll need to do that first.
You have the option of putting the API key directly in the code for simplicity or using environment variables to demonstrate keeping the key out of the code. Either way, make sure you highlight the importance of keeping sensitive data like keys out of source code. Discuss the dangers of a key being leaked.
Objectives
Students will be able to:
Define APIs and SDKs
Identify the benefits of using APIs and SDKs
Use the Giphy Web SDK to retrieve and display GIFs on a web page
Suggested Duration
~1 Period (~45 min)
NYS Standards
9-12.CT.4 Implement a program using a combination of student-defined and third-party functions to organize the computation.
9-12.CT.7 Design or remix a program that utilizes a data structure to maintain changes to related pieces of data.
9-12.NSD.4 Describe the components and design characteristics that allow data and information to be moved, stored and referenced over the Internet.
9-12.DL.1 Type proficiently on a keyboard.
9-12.DL.2 Communicate and work collaboratively with others using digital tools to support individual learning and contribute to the learning of others.
9-12.DL.5 Transfer knowledge of technology in order to use new and emerging technologies on multiple platforms.
Vocabulary
API: Application Programming Interface; A set of rules and protocols that allow different software applications to communicate and interact with each other
API Key: A string that securely identifies you to an API
SDK: Software Development Kit; a collection of software tools, libraries, and documentation that simplifies the process of building software applications for a specific platform or service
Planning Notes && Materials
Familiarize yourself with the Giphy Web SDK documentation (https://developers.giphy.com/docs/sdk) and sample code.
Review the exemplar
No extra materials required for this lesson
Practice signing up for an API key so you'll be able to walk students through it
Suggestions for UDL
Students may need additional examples for understanding what a GIF is. In particular, pay attention to how they're commonly used as an expressive way to communicate online.
Students may have trouble with the abstract concept of an API. It may help to find ways to make it more concrete, such as mailing a letter asking for something or playing a game sending each other instructions in a specific format.
The discussions can be done async or virtual, the hands-on parts can be done individually, in groups, or as a class
Suggestions for Differentiation
You have some flexibility in how much this lesson is independent research vs. following along directly with you.
Likewise, you can flex how much of the lesson is spent discussing the concepts vs. playing with different SDK features
You can try having students incorporate what they know about forms to build a like app with the SDK, such as passing on a search term and displaying the top 10 results
Resources
Assessments
Formative:
Observe student engagement and participation during the hands-on activity
Evaluate the completeness and functionality of the web pages created by each group
Encourage students to ask questions and participate in group discussions
Summative:
API Final Project (End of Unit Project)
Lesson
Do Now/Warm Up (~5 min)
In the previous two labs, we had an api.js
. Pull up the exemplar api.js
for either LAB 1 or LAB 2, and ask students the following questions:
Why do you think it's a good idea to have this stuff separated from the
script.js
?What might cause this file to grow or shrink in size?
The api.js
consists of all the functions being used to communicate with the API. When programming in this file, the focus is on having the proper endpoint, parameters, and try-catch blocks. In the main script.js
, the focus is everything else. These methods are called but expected to operate as designed.
If the API is more complicated or if there are more unique calls that need to be made, the api.js
will grow. As it grows, programmers consider another less tedious way to access data through the API.
Understanding SDKs (~15 min)
An SDK (Software Development Kit) is a collection of software tools, libraries, and documentation that simplifies the process of building software applications for a specific platform or service. Some examples of popular SDKs include the Facebook SDK, the Amazon Web Services SDK, or the Giphy Web SDK.
In the first example, we can see all the steps to directly request the API. In the second, the steps are hidden, and we only have to write 1 line in the
index.html
! Ask students what might be the pros and cons of these two methods.SDKs have less code, but more "magic" or behind-the-scenes logic.
APIs allow us to personalize and customize more.
APIs are usually more flexible and follow more customizable patterns than SDKs. SDKs usually require less code to work with. You may compare this to using a standard
for
loop vs using aforEach()
loop.
Exploring the Giphy Web SDK (~15 minutes)
The Giphy Web SDK is a tool that enables developers to integrate the Giphy service into their web applications. Gifs! You can search for GIFs, display trending GIFs, or create custom GIF stickers.
Show the students some of the Gifs and the Giphy Web SDK documentation and highlight the available methods and parameters. Provide a brief overview of the code provided in the exemplar to illustrate some examples of use. There is also an example below:
Have students work alongside you to obtain an API key from the Giphy Developer Portal.
Hands-on Activity: Integrating Giphy Web SDK (~20 minutes)
Have one or more groups present their web page and demonstrate code for the integration of the Giphy Web SDK.
Discuss the challenges faced by students during the activity and how they overcame them.
Ask students if they like SDKs over APIs? Why or why not? Lead a brief discussion on the advantages and limitations of using SDKs. The primary benefit is simplicity, the primary limitations are non-standard interfaces and not as flexible.
Wrap-Up (~5 min)
Having worked with APIs and SDKs, which did you prefer? Are there things that you think one is better suited for over the other?
Encourage students to explore other APIs and SDKs in their future projects or areas of interest.
Discuss how SDKs are often provided by companies or developers to allow others to integrate their services more easily. You may wish to lead a discussion on what kinds of motivations companies could have to provide SDKS, such as broadening their reach and increasing their functionality for free.
Explain that SDKs often include pre-built functions, code samples, and other resources to assist developers in incorporating specific functionalities into their applications.
Extensions
Mild
Incorporate additional features from the Giphy Web SDK, such as stickers or GIF reactions. Start by incorporating the Search feature.
Medium
Explore other popular SDKs, such as the GitHub SDK and discuss their use cases and benefits.
Spicy
Do a brief research project on the history and evolution of APIs and SDKs in software development.
Last updated