RESTful API Design: consolidate API requests in one subdomain
In the series so far, we've talked about everything that comes after the top level domain. This time, let's explore stuff on the other side of the URL.
Here's how Facebook, Foursquare, and Twitter handle this:
Facebook provides two APIs.
Foursquare has one API.
Twitter has three APIs; two of them focused on search and streaming.
It's easy to understand how Facebook and Twitter ended up with more than one API.
It has a lot to do with timing and acquisition, and it's easy to reconfigure a CName entry in your DNS to point requests to different clusters.
But if we're making design decisions about what's in the best interest of app developer, I recommend following Foursquare's lead:
Consolidate all API requests under one API subdomain.
It's cleaner, easier and more intuitive for developers who you want to build cool apps using your API.
Facebook, Foursquare, and Twitter also all have dedicated developer portals.
How to organize all of this?
Your API gateway should be the top-level domain
Your developer portal should be (in keeping with spirit of REST) developers.yourtopleveldomain.
Do Web redirects
Then optionally, if you can sense from requests coming in from browser where the developer really needs to go, you can redirect.
Say a developer types api.teachdogrest.com in the browser but there's no other information for the GET request, you can probably safely redirect to your developer portal and help get the developer where he really needs to be.
- api -> developers (if from browser)
- dev -> developers
- developer -> developers
Next time: Exceptional behavior!