Class Search API
The Class Search application is an example of a client-server architecture. One of the advantages of using this model is that you can easily make multiple clients, all connected to the same server. For example, JHU has another course search available at https://e-catalogue.jhu.edu/course-search/.
Another advantage of the client-server model is that you can easily make your API (or part of it) available to the public (or select clients) to build other applications. For example, Hopkins has made its Course Search API publicly available here: https://sis.jhu.edu/api, and applications such as semester.ly make use of this API. I encourage you to explore the Hopkins Course Search API.
Application Programming Interface
Application Programming Interface or API is what allows one software application to "talk" to another application. Most modern software applications and almost the entire Web is made up of APIs.
Slack and GitHub both have public APIs that allow programmers to build a multitude of applications and integrate it with them. On the other hand, Gradescope and Piazza don't have public APIs. If I want to create a service so when a new GitHub issue is opened, a message is sent to the corresponding developer's slack channel, I can do that through GitHub and Slack APIs. (In fact, such integration already exists!) On the other hand, I cannot build an integration between Piazza and Gradescope so a post is made in a related thread in Piazza when a student makes a regrade request because Gradescope and Piazza don't have a public API.
TIP
It is highly encouraged that you create a public and well-documented API for your OOSE project.
If this is the first time you are learning about APIs, I recommend starting with the following resources:
- An Introduction to APIs by Zapier.
- YouTube video by Fireship: RESTful APIs in 100 Seconds.
- YouTube video by freeCodeCamp: APIs for Beginners - How to use an API (Full Course / Tutorial).
So what about the TinyURL app?! Should we make a public API for it? Yes, certainly! It will be useful. For example, the publisher O'Reilly Media[1] replaces all URLs in their published books with short alias ones. They have their own URL shortener service. If they didn't, they could use your TinyURL's public API to programmatically replace any URL in the text with a short alias link. (It would be a pain to enter each URL one by one into TinyURL web interface and get a short alias!)
O'Reilly publishes a lot of programming books with pictures of animals on their cover! ↩︎