First version of VOSpace 2.0 WD

Guy Rixon gtr at ast.cam.ac.uk
Wed May 20 06:15:59 PDT 2009


+1 to making it a get rather than a post.

+1 to keeping the detail switch as a parameter of the get.

We should check the response of web platforms (Java, C#, PHP, etc) to  
URIs with a star at the end. It's probably fine, but it bears  
checking. (I'm thinking particularly of the wiring of servlets to  
nodes in a path in Java, where the star has a local meaning).

If foo/bar/* means all the children of foo/bar,then do we allow foo/ 
bar/ to mean the same thing? Or does that mean the container itself  
(similar to ls -d)? Or is it not allowed?

The use case I see that isn't handled by the simplest form is when the  
client wants the results to be paged so as to list very big  
directories. Note "client wants": I very much feel that the service  
shouldn't be able to impose paging. Therefore, I would allow, e.g.,

  GET foo/bar/*.fits?from=42&to=666

where from=42 means start from node number 42 and to=666 means end  
after sending node number 666. No tokens, note, since we have no way  
to receive them in REST.

This could be an optional feature on the service.

Cheers,
Guy

On 19 May 2009, at 14:49, Dave Morris wrote:

> Section 3.7 - list
>
> The current 2.0 proposal is a direct copy of the existing SOAP  
> service behavior re-factored into a REST style service. However, I  
> think several parts of the list operations are overly complex for  
> most use cases (yes - I know I proposed some of the complexities in  
> the 1.1 spec, but many of these were added to get around the  
> limitations of handling large lists in the existing DOM based SOAP  
> tools available at the time).
>
> ----
>
> Proposal : Simple GET implementation of list.
>
> If we drop a lot of the complexity, then it should be possible with  
> a simple GET request.
> If we have a container node at
>
>   vos://service/path/container
>
> and the base URL for the REST service is
>
>   http://host:port/base
>
> so a REST request for the container details would be
>
>   GET http://host:port/base/path/container
>
> In which case, a simple list operation could be requested by adding / 
> * to the end of the container URI, which would return a list of the  
> child nodes as an XML stream.
>
>   GET http://host:port/base/path/container/*
>
> If we wanted to keep the wild card match for names, then adding / 
> *.txt to the container URI would return a list of the child nodes  
> with names
> that matched the pattern.
>
>   GET http://host:port/base/path/container/*.txt
>
> If we wanted to keep the detail level, this could be added as a  
> query param, so the following request would return a minimal detail  
> list.
>
>   GET http://host:port/base/path/container/*.txt?detail=min
>
> I think this simple GET version of list will meet over 99% of our  
> use cases, be much easier to implement both client and server side,  
> have
> far fewer edge cases and much simpler error responses.
>
> If we still need the complex parts to meet some use cases, then I  
> would suggest they would be better handled by the find operation, on  
> a separate service endpoint.
>
> Does anyone have a use case that wouldn't work with this simplified  
> form ?
>
> Dave



More information about the vospace mailing list