Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/therebelrobot/learn-x-with-apis
A series of challenges designed to help you learn a new programming language through building a web API.
https://github.com/therebelrobot/learn-x-with-apis
Last synced: 24 days ago
JSON representation
A series of challenges designed to help you learn a new programming language through building a web API.
- Host: GitHub
- URL: https://github.com/therebelrobot/learn-x-with-apis
- Owner: therebelrobot
- License: wtfpl
- Created: 2015-09-25T15:11:35.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-10-08T18:41:52.000Z (over 9 years ago)
- Last Synced: 2024-11-08T11:19:45.547Z (3 months ago)
- Homepage:
- Size: 158 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Learn X with APIs
[![Learn X with APIs](http://learn.r.ebel.space/[X])](https://github.com/therebelrobot/learn-x-with-apis)
We've all been there. You've gotten proficient in a given programming language, and you want to expand your repertoire. Or maybe you just want to learn a new framework within that language. Either way, you've spotted a language that you'd like to work in, but if you're a project-based learner like me, finding a project that will showcase what the language/framework has to offer can be a challenge to pin down.
Enter *Learn X with APIs*. Think of it as the more advanced cousin of `printf("hello, world");`. You'll gain practical first-hand experience with your new language, and maybe even have something to show off to others when you're done.
## How do I get started?
Create a new repo with the name `learn-x-with-apis`, replacing `x` with your language of choice, and start coding!
## Nitty Gritty Details
As you may have guessed by the title of the repo, we're going to build an API. The list of features to include are listed down below. This is by no means a comprehensive or exhaustive list, but represents a good starting point with which to begin your foray into a new programming jungle.
### List of features
- [ ] Basic URL Routing
- [ ] A root level route that provides info about the server (*e.g.* `/` returns `Learning [language] with APIs!`)
- [ ] An endpoint that returns data from an external API
- [ ] An endpoint that returns data from a single local file
- [ ] An endpoint that consumes a json file and dynamically creates more endpoints based on the data
- [ ] An endpoint that returns data from the database of your choice (*e.g.* `MySQL`, `MongoDB`, `Redis`)
- [ ] An endpoint that returns static assets from a directory (*e.g.* `/static/index.html`, `/static/style.css`, `/static/app.js`)
- [ ] An endpoint that takes parameters and does a calculation (*e.g* `/add/2/3` returns `5`)### Things to remember
- You don't need to reinvent the wheel. Look for popular libraries that accomplish what you're trying to do. Low level solutions are fun to make, and teach a lot, but can sometimes be more complex than is necessary for just getting started
- Research and utilize package management systems. Package managers (*e.g* [NPM](https://docs.npmjs.com/getting-started/what-is-npm) or [LuaRocks](https://luarocks.org/)) are generally a good place to find and include additional libraries for your application.
- Look at other repos in this language, and see if there is a consistent style to the language. Do most devs use 2 or 4 space indentation? Tabs or spaces? You won't get everything right the first try, but it's worth taking a look at.
- Ask for help. StackOverflow, Google, that guy you met that one time at that conference, all can be excellent assets to accomplish your goal.### I've made it! What now?
Once you've completed the API to your satisfaction (or at least to the point of the features outlined above), add the *Learn with APIs* badge ([![Learn X with APIs](http://learn.r.ebel.space/[insert--language--here])](https://github.com/therebelrobot/learn-x-with-apis)) to your repo with the following code:
```markdown
[![Learn X with APIs](http://learn.r.ebel.space/[insert--language--here])](https://github.com/therebelrobot/learn-x-with-apis)
```- Dashes `--` → `-` Dash
- Underscores `__` → `_` Underscore
- `_` or Space ` ` → ` ` SpaceAfter that, [fork this repo](https://github.com/therebelrobot/learn-with-apis#fork-destination-box), add your name, the link to your repo, and a working link to the server (Heroku?) to this README in the `Successful APIs` section, and pull request it back in to show off your beautiful new polyglot skills.
## Successful APIs
### [![Learn Node.js with APIs](http://learn.r.ebel.space/node.js)](https://github.com/therebelrobot/learn-x-with-apis)
| Contributor | Repo | Server |
| ----------- | ---- | ------ |### [![Learn Go with APIs](http://learn.r.ebel.space/go)](https://github.com/therebelrobot/learn-x-with-apis)
| Contributor | Repo | Server |
| ----------- | ---- | ------ |### [![Learn Python with APIs](http://learn.r.ebel.space/python)](https://github.com/therebelrobot/learn-x-with-apis)
| Contributor | Repo | Server |
| ----------- | ---- | ------ |## Contribution
As I said above, this is far from a comprehensive or complete list. Is there a feature you think should be included on this? **[Let me know!](https://github.com/therebelrobot/learn-with-apis/issues/new)**
## License
[WTFPL-2.0](https://tldrlegal.com/license/do-wtf-you-want-to-public-license-v2-(wtfpl-2.0))[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/therebelrobot/learn-x-with-apis/trend.png)](https://bitdeli.com/free "Bitdeli Badge")