Hi REST-a-farians,
The JERSEY DSpace-REST api was pull-requested, and merged into DSpace master, (in place for DSpace 4.0).
Its read-only, anonymous user only, won't expose sensitive information, and has endpoints for Community, Collection, Item, and Bitstream, enough to get one started. I would say the code is pretty simple/clean, easy to understand, maintain, add features, etc. I've also had jmeter attack all of the endpoints (JSON), and they seem to be pretty stable, i.e. 100 requests/min won't harm the site. On my laptop, I was averaging 600 requests/second. Some endpoints are really fast, and some larger collections of objects are really slow. An amazon ec2 micro instance could only handle about 20 requests/second.
So, I wanted to add search to this, and wrote a quick-and-dirty method for item.search, that used internal DSpace lucene index, and it was really quick, I think 15ms was the average response time, while having jmeter attack the site. However, the lucene search index in DSpace is becoming DEPRECATED with this DSpace 4.0 release, in favor of discovery/solr, so if we/you want search, then I'd recommend checking out the code and trying to wire that in. Also, if you any preference on how search should work, it would be better to get that in to the API before the 4.0 release.
The way I had it was pretty simple: /rest/items/search?q=global information
But I'm thinking if you wanted to search by author, then it should become: /rest/items/search?author=Herrick, John H. or /rest/items/search?author=Herrick, John H.&q=aviation
There is paging: offset+limit, I haven't touched anything like sorting/ordering.
Lastly, I was wondering what experiences people had in building clients to REST api's. In my sample-app, (dspace-rest-play), everything works really well, but I was trying to piece together a jQuery-Tree the other day, and kept struggling with getting javascript/browser to send the appropriate Accept header (json), and then having to deal with cross-domain issues, and dealing with jsonp. I was just wondering if anyone had recommendations.