REST based APIs provide significant advantages over other standards heavy interfaces like SOAP. REST makes it very easy to expose your business services to external world. It is not only simple data access, you can even encapsulate business logic in each API execution.
From a developer / architect standpoint, there are various areas that need to be looked into during the design phase. One extremely useful article I found is . It clearly talks about the things you should consider while building such interfaces. Remember that these are interfaces. Once built, you will find it very difficult to change the API contracts, no matter how compelling the reason could be. Hence it is important to get it right the first time.
One interesting challenge is version maintenance. You will eventually reach a situation where the API contract has to be changed – to support new features or fix some major issues. When that happens, how do you manage that change considering the widespread adoption of the API? Few suggestions: