inputEx 0.2.2, SMD and YUI-RPC
Although we didn’t add any new field in this release, inputEx 0.2.2 still brings a new set of options and bugfixes. (see the changeset for details)
The most significant part of this version, which I’m pretty excited about, resides in the following components :
- improved JSON-schema support (example one and two)
- yui-rpc: A Service Mapping Description (SMD) client for YUI, based on the SMD Proposal
- inputex-rpc: automatically builds a form from a SMD
- JsonTreeInspector widget: simple widget to display a JSON tree
- The SMD-tester utility
YUI-RPC or “What the heck is Service Mapping Description (SMD)” ?
Abstract from the proposal:
A Service Mapping Description (SMD) is a JSON representation describing web services. An SMD can defines the various aspects of a web service such that clients can coherently interact with the web services. An SMD can be used by generic tools to generate interfaces, human and programmatic, to access available web services. A wide array of web services can be described with SMD including REST services and JSON-RPC services. The SMD format is designed to be flexible, compact, simple, readable, and easily implemented.
SMD is basically a WSDL-like, but for JSON. It’s so much simpler to implement that I regret the time I spent on WSDL ! Instead of using XML, XML-RPC and SOAP, we are now able to play with technologies better suited for the browser environment: JSON, JSON-RPC, REST, JSONP etc…
Concerning the “programmatic interface”, the dojo framework already provides a remote procedure calls module. However, since I’m a YUI-user, I had to re-implement it on YUI, which gave birth to YUI-RPC.
How inputEx is playing with SMD
From the inputEx point of view, the best part of SMD is that the method parameters are defined using… JSON-Schema !
inputEx was already able to build a form from a JSON-Schema, so it was pretty trivial to implement an automated form generation to call webservices based on a SMD. Here is an example of such a form using a SMD for Yahoo! search.
I believe this will help a lot in decoupling interfaces and webservices. To prove my point, I quickly wrote some SMDs for popular webservices like Yahoo! search, pipes, Twitter, geonames, delicious, flickr, YQL and others, and built a tiny interface, the SMD-tester, to build the forms, call those webservices, and display the response.
Have fun !