I've been working quite a bit with RESTful
webservices and MQTT recently. One annoying gap of REST
interfaces is there's no clear / simple / natural way to work
notifications into the paradigm. For example, consider this
resource
This is very well behaved from a REST point of view. It can
handle GET and PUT (and I think PATCH) requests to retrieve
and modify state. However, if the state is modified, how does
someone else know this in near real time? Well, MQTT is a
natural solution, but the way a developer would know this is
to "read the docs". Reading the docs kinda sucks if you can
make it Just Work.
For discussion, I'm proposing a rel="mqtt" Link type that
can bind REST resources to an MQTT server. For example, if you
look at that resource above:
HTTP/1.1 200 OK
Date: Sat, 05 Jul
2014 14:36:37 GMT
Server: Apache/2.2.25
(Unix) DAV/2 PHP/5.2.16 mod_ssl/2.2.25
OpenSSL/0.9.8e-fips-rhel5 mod_fastcgi/2.4.6
Content-Length: 43
Access-Control-Allow-Headers:
Content-Type
Access-Control-Allow-Origin:
*
Access-Control-Allow-Methods:
GET, PUT, POST
Content-Type:
application/json
{
"on": true,
"rgb": "#FF0000"
}
The Link: header says that there's an associated MQTT
resource available, that broadcasts updates (payload=PUT) in
JSON (the default content-type) using the topic
"basement/hue/1". Deeper documentation is available here:
And a really lousy diagram of what this looks like right
here:
Your feedback is appreciated.
Regards,
David