danielebailo tecnology
Because of my job at INGV, where I'm involved in the huge EPOS European Project, I'm daily diving into lots of information from papers, blog posts and other resources (not last, some discussions with great colleagues) which all deal with the main subject of interoperability of systems.
Well, actually the real main topic to me is interoperability, whose inflections can be as many as the fields of knowledge (and life) where we use such concept: we may call it Interculturality or Interculturalism in social sciences, we may call it price, which allows the goods exchange in Economics... but well, that's another story and I think you get the idea.
Some interoperability specific - more concrete - themes I have to deal with, are stuff like Microservices and everything which is related to web services.
Web services are one of the main concept (and technology) which enable interoperability of systems.
RESTful web services are at the moment widely used. They basically rely on HTTP technology, are quite human readable and surely machine understandable. The advantage of such services is their ease of use.
In the following example, copying/pasting it to your browser, you access to a free weather services by a RESTful API request:
http://api.openweathermap.org/data/2.5/weather?q=London,uk
Then you get a weird response, pretty human readable (maybe with some newline...) which tells you how's the weather in London.
Just for fun, here is a list of public RESTful APIs providers. BTW, Facebook and Twitter needs you to be logged in to user their RESTful APIs.
When creating RESTful web service, it is interesting to know that it can reach different degrees of Maturity according to how much you exploit the power of HTTP. This wonderful post by Martin Fowler explains the Richardson Maturity Model.
According to this model, your RESTful service can be "graded" from 0 to 3, where 3 designates a truly RESTful API. using M. Flower words,
Richardson Maturity Model provides a good step by step way to understand the basic ideas behind restful thinking,
and what is really interesting is
its relationship to common design techniques.
- Level 1 tackles the question of handling complexity by using divide and conquer, breaking a large service endpoint down into multiple resources
- Level 2 introduces a standard set of verbs so that we handle similar situations in the same way, removing unnecessary variation
- Level 3 introduces discoverability, providing a way of making a protocol more self-documenting.
Reading through all the article, you can get more and more familiar with HTTP concepts and understand "the real nature of HTTP". Also, I was surprised by the power and richness of all HTTP (e.g. verbs, hypermedia controls), a communication protocol which deserve a special attention because of its widespread use in any kind of communication.
Last but not least, I discovered Leonard Richardson to be a quite unique person, programmer, musician and writer with a hacker mindset... have a look at his eclectic website.
Link to the article: Richardson Maturity Model by Martin Fowler.