UWS 0.4

Paul Harrison paul.harrison at manchester.ac.uk
Fri Jun 20 06:29:15 PDT 2008


On 2008-06 -19, at 20:30, Patrick Dowler wrote:

> On 2008-6-16 05:58, Paul Harrison wrote:
>> Although the document might not make this explicit, the intention is
>> that the "minimum" requirement is that a UWS service return XML for
>> all of the job objects (excluding the individual results which may be
>> returned in their "natural" mime type). I.e. MUST support the Accept:
>> application/xml request header.
>>
>> The preliminary schema attached to the document would have the phase
>> returned as
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <uws:phase xmlns:uws="http://www.ivoa.net/xml/UWS/v0.9">COMPLETED
>> </uws:phase>
>>
>> Additionally if the client indicates that it can accept html then the
>> XHTML can be returned - as there is a strong desire to be able to
>> drive these UWS from standard browsers. I am currently a little  
>> unsure
>> how proscriptive we can attempt to be on the form that the XHTML
>> takes, but I think it would be nice if we could find a way of
>> guaranteeing that it works on as wide a range of browsers as possible
>> - i.e. don't be too fancy with the HTML interface, and try to use
>> browser specific features.
>
> Moving along with my UWS implementation, I have stumbled into a few  
> things:
>
> 1. redirect destination
>
> In the case of being driven by the browser, it seems that the best  
> response to
> a POST (modification of the job) is to redirect to the job rather  
> than to the
> modified resource, for a couple of reasons:
>
> - when I modify one resource or POST some new params while setting  
> up the job,
> it seems plausible that the service will modify other resources as  
> well, such
> as changing the quote, termination, or destruction as I specify  
> input files.
> Specifically, the quote and/or termination will likely go up if the  
> inputs
> are large, while a resource-constrained service may decrease the  
> amount of
> time until destruction... I can't see any way to prohibit POST from  
> having
> such side effects. So it seems better to show the user the new job  
> state.
>
> - if one did redirect to the specific resource (eg phase) the page  
> would need
> a link back to the job which the user would immediately click, or  
> the user
> would immediately hit the back button... to see the new job state  
> and/or to
> further modify (other) resources.
>
>
> - in the implementation, I need 3 pages: one with a "create job"  
> form, one
> that displays/edits the job, and one to display the result list. If  
> I also
> need to render pages with just one sub-resource, it adds work/ 
> complexity and
> additional page views and clicks with no apparent benefit

the thinking behind the original suggestion of returning a redirect to  
the subobject is that a "non-browser" client would immediately receive  
a response that shows what the subobject was set to. However, I can  
see that in the interactive use case this is not optimal.
>
>
> So the pattern would be to redirect to the job and always display  
> the job. In
> the XML output mode, I don't see any problem with the sub-resources  
> being
> addressable via GET (and returning the small XML document above);  
> this would
> be especially useful in polling the phase to watch for the  
> transition from
> EXECUTING to COMPLETED. But in general, the redirect-after-post  
> would go to
> the job.
>

I think that I am probably with you on this one - as long as the get  
to the job does always give a full representation of the sub-objects.  
I will change the next version of the spec accordingly unless anyone  
objects.


> 2. Accept header
>
> disclaimer: It seems quite likely that I do not understand the accept
> semantics :-)

and I suspect that you are not alone ;-)
>
>
> Ok, the rules for interpretting this are pretty odd and to get the  
> desired
> behaviour (from firefox) I have to not follow the rules.
>
> In the spec (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html),
> the client can specify multiple mimetypes, each with a "q" value that
> indicates priority. Highest priority is for the most specific type, so
>
>   Accept: text/*, text/html
>
> means the client can take any text type but prefers text/html (more  
> specific),
> while
>
>   Accept: text/plain; q=0.5, text/html
>
> means the client can take these two types but prefers txt/html over  
> text/plain
> (lower q value).
>
> Now, firefox (version 2 at least) sends this (formatted for clarity)
>
>   Accept:
>      text/xml,application/xml,application/xhtml+xml,
>      text/html;q=0.9,text/plain;q=0.8,
>      image/png,
>      */*;q=0.5
>
> which (for UWS) I interpret as:
>
> xml (preferred) -- server can pick from the 3 variants
> then text/html (q=0.9)
> then text/plain (q=0.8)
>
> Why firefox would prefer arbitrary XML to HTML is beyond me. Also,  
> the q=0.5
> on */* is completely redundant since it is also the least specific  
> type and
> hence automatically the lowest priority.
>

well firefox 3 seems a little more sensible

Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8



> For now, I just look through there for text/html and if I find that  
> I write
> HTML. Otherwise, I write XML. Tools like curl just put Accept: */*  
> since they
> do not care (and hence get XML).

I have to admit that is the logic that I have used in the CEA UWS  
implementation that I did for Trieste - i.e. I ignored the q processing

Perhaps the UWS document should say that the server will only serve  
application/xml and application/xhtml+xml - then any client that asks  
for anything else will receive a 406. Note that I am saying that XHTML  
is the minimum acceptable, not just HTML....

>
Cheers,
	Paul.



More information about the grid mailing list