[OTDev] API 1.1

Vedrin Jeliazkov vedrin.jeliazkov at gmail.com
Tue Jan 5 13:20:59 CET 2010


Dear Alexey,

2010/1/5 Alexey <alexey.zakharov at ibmc.msk.ru>:
> Dear Verdin,
>
>
>
> How we understand the query: curl -X GET
> http://{server}/dataset?compound_uris[]={compound_uri1}&compound_uris[]={compound_uri2})
> according API 1.1 assumes using only dynamic URL, that means necessity to
> use DBMS.

Well, the need for DBMS depends mainly on the functionality you want
to provide and to a lesser extent on the development platform you're
going to use for achieving this. So far only IDEA's implementation of
the OpenTox API includes a database backend (IN-SILICO's, NTUA's and
TUM's implementations also provide "dynamic URLs" (the heart and soul
of any RESTful API), without using a database backend).

As far as I know, the CakePHP (http://cakephp.org/) development
framework, which Nina recommended a few weeks ago, requires a database
backend. You might also want to have a look at the Recess
(http://www.recessframework.org/) framework, which might prove to be
more suitable for the functionality you want to provide (it might also
require a database backend though -- I haven't checked this). A few
other possible solutions are also mentioned at the bottom of the
Recess homepage with some very brief notes on key differences.

In case that you prefer to rely on your experience with Delphi, rather
than investing efforts in learning new development tools, then it
might be interesting for you to check this article (if you haven't
seen it already):

http://blogs.embarcadero.com/pawelglowacki/2008/04/04/38508
(Building .NET 3.5 WCF RESTful web services with Delphi 2007)

> Do you decide to refuse from statical URL and we need to use CMS for hosting
> for this case or maybe we can remain the use of statical URL?

Well, some of the essential characteristics of any RESTful webservice
are the mapping of resources (objects) to URLs and the provision of
some set of operations on these resources (e.g. POST, GET, PUT or
DELETE). Obviously you cannot achieve this by using only static URLs.
In fact, only the top-level (or entry point) URLs would be static
(e.g. /dataset, /algorithm, /model, etc...). The general pattern for a
URL would be /service/{serviceparameter}/smthelse/{param}.

In summary, you would need to support dynamic URLs, but don't have to
use necessarily a DBMS and/or CMS for achieving this. In fact you
should rather use some development framework (similar to those
mentioned above), which provides the building blocks for RESTful
webservices implementation. This framework might require a DBMS or
might have optional support for DBMS or could even work with simple
flat files. Last but not least, for some store/retrieve operations
(e.g. on dataset, algorithm, model, feature, etc...) you could rely on
IDEA's OpenTox webservice, which already supports a large subset of
them (available through the API v1.1).

Kind regards,
Vedrin

PS: For your reference, here is a matrix of the existing
implementations and the corresponding development frameworks, to the
best of our knowledge (@All: please check and modify your entry if
required):

ALU-FR: Ruby, Sinatra (http://www.sinatrarb.com/)?
IDEA: Java, Restlet (http://www.restlet.org/), Tomcat, MySQL
IN-SILICO: Ruby, Ruby-on-Rails (http://rubyonrails.org/)
NTUA: Java, Restlet (http://www.restlet.org/), Grizzly
(https://grizzly.dev.java.net/)
TUM: Java, Restlet (http://www.restlet.org/), Tomcat?



More information about the Development mailing list