Tuesday, March 04, 2008

API

So the guys at Buxfer.com opened up a REST API to their service today. I really appreciate that they did REST right, rather then some weird not-quite-by-the-rules hybrid. If you have ever had to use SOAP to do anything, you can really appreciate how fresh and lightweight REST feels, especially when it's ROA.

This got me thinking about my favorite parts of programming. I think that API design is a very interesting problem, because of the constant clashing requirements. On the one hand, you want something simple and easy to understand. On the other, you want something rich enough that it is actually really useful. You also have to really think it out beforehand, because once an API is out there, it's a major faux pas to break existing calls. It's kind of like designing a miniature language. A DSL for data if you will.

I have to wonder if the API is actually what makes a site have lasting value. All of the big important sites I can think of on the net are important to me because they can be built upon. Facebook exploded when they introduced their Platform. Amazon transcended its place as the Walmart of the Internet when it started offering AWS (and became more like the Power Utility of the Internet). Paypal became a real merchant option with their API, Google Maps exploded with it's API, and the most obvious of all is Twitter, which receives 90% of their requests through their API.

If anything, it seems like the API is the real killer feature that makes or breaks a site. It's like selling directly to the customer as opposed to selling to other salesmen. If you sell to a salesman (get them to use your API as a backend service), then you get all his customers too, without having to chase each of them down directly. On top of that, your API clients are much more likely to be willing to pay for what you offer, because they will be using it to make money. They will also be more likely to stay around long term.

Thankfully I think API design is wicked fun, so hopefully I can make something out of this.

0 comments: