To practice my web APIs skills, I got some data from the GitHub API, and used it to create a list of the most starred (== popular) ITP related repositories.
The expected (unpleasant) surprise
The process of making this page wasn’t smooth at all. In fact, this project cannot be further away from my original intentions. Here’s the truth:
- I decided to let users enter a word (as an input), and to use this word to form a Haiku poem from three different poems.
- I found poetry.db, which at first glance looked like the perfect source for my project.
- I started to work on the logic that will form new Haiku poems out of the text I’ll get from poetry.db.
- The logic was partially ready, and I was eager to test it on real data.
- Oh no! My browser is shouting at me that I have a cross origin request error, and it is blocking my request to the API. I’m starting an endless search to find a solution, while going over countless Stackverflow threads, that appeared to be somewhat useless in my poor situation.
- Aha! Apparently, JSONP should be JS’s workaround for this problem. My project could be saved!
- Oh no! poetry.db’s server does not support JSONP. My options are:
- To setup a web server and to hope for the best.
- To try to find a new project that has better chances of success. — Chosen.
- A new project! This time I’ll go for an API that was build by great developers, for the average developer, something that is a ‘one size fits all’, and I can assume that is stable and well maintain – GitHub’s API!
GitHub’s API is well structured, fast, and reliable. I will surely recommend it to everyone.
Eventually, this process taught me (again), that when I deal with web APIs, the hustle is just part of the game. I’m sure that if I had some more time (a few extra days) I could have found a solution for the poetry.db API, and I could have completed my original project.
The cross-origin problem is a problem I face often, and I hope that we will be able to talk about it in class. I really feel that mastering the logic behind the cross-origin workaround is critical for web development.
(if you got to this point, feel free to scroll up and click that ‘See it here’ link again).