This is great general API design advice, but the ‘for a smartphone app’ specific items aren’t really covered in much detail.

For a smartphone app, you’ll want to take into account the following things in your API design:

1. It’s better to have fewer connections with larger datasets than more connections with small datasets.

The reason is that on mobile networks compared to wifi networks the routing overhead of individual requests is much, much, much larger. Setting up the connection is a significant portion of the api call, so it’s better to combine. Pure rest apis with many small resource calls are typically sluggish in a mobile app that runs over a 3G network. I practice ‘scenario driven design’ here, in other words don’t work from the resources upwards, but from the needs of the application down.

2. Use http compression. Any data you can save between phone and api is a gain in performance.

3. Avoid verbose protocols such as SOAP or XML in general, mostly for the same reason as 2.

4. Use caching headers and implement them properly in your app; an app that doesn’t make a call because it has retained data is a huge performance gain in a mobile app; however you do want control on the server to make sure data isn’t retained for too long. This is where caching headers help you.