- From: Jason Leyba <jleyba@google.com>
- Date: Wed, 12 Nov 2014 17:27:42 +0000
- To: public-browser-tools-testing@w3.org
- Message-ID: <CA+ffpBzj2TqrrNPF_NNHcQ=crcpvXwM5GwLOn55zDPgAZkhoxg@mail.gmail.com>
On Wed Nov 12 2014 at 4:42:19 AM James Graham <james@hoppipolla.co.uk>
wrote:
> On 12/11/14 00:03, Jason Leyba wrote:
> > Inline.
> >
> > On Tue Nov 11 2014 at 3:52:59 PM David Burns <dburns@mozilla.com
> > <mailto:dburns@mozilla.com>> wrote:
> >
> > Answers inline
> >
> > On 10/11/2014 09:51, James Graham wrote:
> > > On 08/11/14 00:44, David Burns wrote:
> > >> Hi All,
> > >>
> > >> I have started going through the notes and making some of the
> changes
> > >> and am looking at HTTP Response codes that should be returned. I
> have
> > >> put examples below, can you check that I am understanding
> correctly
> > >> before I carry on. This is only a subset but it covers most of
> > the URL
> > >> endpoint types
> > >>
> > >> GET /session/{sessionId}/element/{__ELEMENT}/attribute/{name}
> > >> 200 if the attribute found
> > >> 404 if not found with data being returned as {"value": null}
> > > I'm not sure why this would be {"value":null}; I thought the plan
> was
> > > for all non-200 responses to have {"error":something} in the body.
> >
> > I was trying to show that if we don't find the attribute/property
> name
> > we return a 404. The spec describes that if we can't find the
> > attribute/property we need to return a null. I am happy to have that
> > localends just infer that when they get back a 404 that it is the
> > equivalent to a null.
> >
> >
> > HTTP 404 implies an error. If we go this route (and I don't think we
> > should), we should use a 204.
>
> If you don't want to model the attribute a a REST resource then don't,
> but if you do — and the design above does — a 404 is clearly the right
> response code for cases where the resource isn't found.
>
> Of course the local end can expose that 404 in any way it likes e.g.
> returning null/None, raising an AttributeNotFound exception, etc.
>
> > >> POST /session/{sessionId}/element/
> > >> 200 if Element is found
> > >> 501 if it is not found with error in data model returned
> > > Assuming you mean this as an example of a method/path combo that
> > doesn't
> > > exist, 404 seems more appropriate (and 405 if the path exists but
> the
> > > wrong method was used).
> >
> > Yea, we should be returning 405 if we expect a GET and get a POST or
> > <insert other verb here>.
> > What should we return if the URL and verb used are correct but the
> > element is not found?
>
> I still don't see POST /session/{sessionId}/element/ in the spec. I see
> various GET /session/{sessionId}/element/{elementId}/{something}
> commands which should return a 404 if the element isn't found.
>
> > 200 with current status (kinda like what we do oyrselves
> >
> >
> > We shouldn't use HTTP codes for command results - we'll lose the ability
> > to return errors about the request. Stick to convention on response
> codes:
> >
> > 5xx: server failed to process the request
> > 4xx: invalid request (404 - session/element id not found, 405 method not
> > permitted, etc.)
> > 2xx: valid request & command executed successfully, see body for result
>
> I can't tell whether I agree with this, but I don't see any reason why
> we can't send a response body containing error details with non-2xx
> responses (indeed it seems to be a SHOULD-level requirement in HTTP). So
> I'm not sure I see what ability you are worried about losing.
>
>
Suppose we use REST and you request an element attribute:
GET /session/{sessionId}/element/{ELEMENT}/attribute/{name}
You get back a 404. What does the 404 apply to? {sessionId}, {ELEMENT}, or
{name}? In terms of the existing client APIs [1], the first two would be
errors, but the third would be permissible. So how do you differentiate -
put the details in the response body?
{"status": "session not found"}
{"status": "element not found"}
{"status": "success", "value": "null}
Now returning the 404 is redundant with the information in the response
body.
-- Jason
[1] I suppose someone could implement a client API that considered a
missing attribute as an error.
Received on Wednesday, 12 November 2014 17:28:11 UTC