There were some people asking about Zinc-REST. I took some time to improve the package (by moving some private code into it) and documented it by adding a couple of examples and unit tests.
Load the group 'REST' using the latest ConfigurationOfZincHTTPComponents (NeoJSON will be loaded as a dependency). There are two examples: (1) ZnExampleSumRestCall handles REST requests for /sum For a GET request, it accepts numbers as path elements or as a query parameter. GET /sum/1/2/3 GET /sum?numbers=1,2,3 For a POST requests, it accepts a text/plain entity containing numbers. POST /sum '1,2,3' (2) ZnExampleStorageRestServerDelegate offers a REST interface on /storage/objects with CRUD operations on JSON maps. GET /storage/objects list all stored maps as a list of object-uris GET /storage/objects?key1=value1&key2=value2 as above with conjunctive condition specified POST /storage/objects <MAP> store a new map, returns the created object-uri GET /storage/object/<id> return the map stored under id DELETE /storage/object/<id> delete the map stored under id PUT /storage/object/<id> <MAP> overwrite the map stored under id with MAP Both examples are tested by matching unit tests. There is no further independent textual documentation, you'll need to know what REST style interfaces are and know about Zinc HTTP Components. Compared to Seaside-REST this solution is simpler (no Seaside dependency), a bit less declarative (no pragmas), closer to the mechanics of HTTP, not linked to automagic conversions (Magritte). But this is code that I use in production. Sven -- Sven Van Caekenberghe http://stfx.eu Smalltalk is the Red Pill |
Thanks a lot sven :)
On Dec 12, 2012, at 9:23 PM, Sven Van Caekenberghe wrote: > There were some people asking about Zinc-REST. I took some time to improve the package (by moving some private code into it) and documented it by adding a couple of examples and unit tests. > > Load the group 'REST' using the latest ConfigurationOfZincHTTPComponents (NeoJSON will be loaded as a dependency). > > There are two examples: > > (1) > > ZnExampleSumRestCall handles REST requests for /sum > > For a GET request, it accepts numbers as path elements or as a query parameter. > > GET /sum/1/2/3 > GET /sum?numbers=1,2,3 > > For a POST requests, it accepts a text/plain entity containing numbers. > > POST /sum '1,2,3' > > (2) > > ZnExampleStorageRestServerDelegate offers a REST interface on /storage/objects with CRUD operations on JSON maps. > > GET /storage/objects > > list all stored maps as a list of object-uris > > GET /storage/objects?key1=value1&key2=value2 > > as above with conjunctive condition specified > > POST /storage/objects <MAP> > > store a new map, returns the created object-uri > > GET /storage/object/<id> > > return the map stored under id > > DELETE /storage/object/<id> > > delete the map stored under id > > PUT /storage/object/<id> <MAP> > > overwrite the map stored under id with MAP > > > Both examples are tested by matching unit tests. > > There is no further independent textual documentation, you'll need to know what REST style interfaces are and know about Zinc HTTP Components. > > Compared to Seaside-REST this solution is simpler (no Seaside dependency), a bit less declarative (no pragmas), closer to the mechanics of HTTP, not linked to automagic conversions (Magritte). But this is code that I use in production. > > > Sven > > -- > Sven Van Caekenberghe > http://stfx.eu > Smalltalk is the Red Pill > > |
Free forum by Nabble | Edit this page |