Tranquil APIs

I'm reaching the end of a project based on REST and Django REST Framework. There have been good parts and bad, but out of it has come some thinking about architecure and the inspiration to do things a bit differently.

I've put together an alternative to REST which I'm calling Tranquil.

Summary

Tranquil is a protocol framework which helps define the communication between web client and server. It is designed to be very simple and very extensible.

Tranquil is similar in intention to REST, however:

  • Tranquil is transport agnostic, so transport could be by WebSockets, AMQP or avian carrier.
  • Tranquil allows multiple queries per request to reduce round-trips and so multiple queries can be made within the one database transaction.
  • Tranquil actions are extensible, allowing the usual Create, Read, Update and Delete but also more complex operations such as Map, Reduce and Atomic increments, appends and so on.
  • Tranquil actions are composable, allowing front-end developers to adjust for their own data requirements.

By contrast with JSON-RPC and SOAPjr, Tranquil places more emphasis on entities and less on methods, with the intention of reducing the proliferation of custom methods.

Further Reading