restsdk

SDK on top of REST API - Overhead?


As far as I know SDK and API are different, not completely but SDK is implementation tooling vs API is more of interface.

An SDK may provide a set of tools, helper classes (e.g. additional code that simplifies the access of an API), specific language bindings and sample code to help users develop and use the API. In general, you could have a single API exposing a set of functionality and have multiple SDKs to access that API. An SDK may not always exists for an API, but it is helpful when one is provided.

We have a requirement where we are developing REST API to access data, my recommendation is to create SDK on top of REST API for the fact that,

We shouldn’t overburden API design. A lot of what's needed is on the client side and you can push that burden to an SDK. The SDK can provide the platform-specific code that developers use in their apps to invoke API operations - meaning we can keep API clean.

One of the other architect is not interested in developing SDK on top of REST API, he feels SDK will be an additional overhead..

I just thought of getting various thoughts from this forum... Any suggestions, feedback, ideas would be really useful..

Thanks,
Barani


Solution

  • Whooh... it's acronym time!

    SDK's are usually just wrapper classes and functions to make accessing your REST or other Webservice APIs easier. They themselves are APIs as they provide an interface for a programmer to use. Instead of having to make your clients run curl or other web requests directly to hit your web API, you can abstract that for them.

    If you're constructing an SDK, cool, but the core Web API should be clean, understandable and stand on it's own merit.

    I'm not a big fan of SDK's unless your client demographic is unable to access/consume REST services directly or don't have real development staff. For example, if you're targeting web marketers that want drop-in code and have difficulty anything more complex than a facebook like button. SDK's will add overhead to create and maintain now and in the future--especially across different platforms. Invest the extra time in improving your REST API.