Forum: Ruby on Rails API request with email in address path possible?

Posted by Heinz Strunk (cojones)
on 2011-10-07 17:31
Hey,

I'm currently implementing a API for a website which is supposed to
support following requests:
/api/users/id/1
/api/users/email/test@example.org
...

Of course the email address with its dot causes an error because if the
.org which is interpreted as file format.

How can I pass an email address like that?

Thanks for the help,
Hans
Posted by Martin Wawrusch (Guest)
on 2011-10-07 17:43
(Received via mailing list)
Interesting question. First of all I think you need to change this a bit
into

/api/users/1 as the canonical url

and perhaps add a route like /api/users/search?email=youremail
which redirects to the canonical url.
Posted by Heinz Strunk (cojones)
on 2011-10-07 17:59
Oh, yeah... I actually added the /id/ part by accident. So the only way 
to pass an email is by a paramter like ...?email=xxx?
Posted by Martin Wawrusch (Guest)
on 2011-10-07 18:09
(Received via mailing list)
It might be possible to pass it as part of the uri, but you do not want 
to
do that because it would create a second url representing the same 
resource.
Basically, you want to have one url per resource to make the API easy to
use, and for things that are actually queries it is better to use
parameters.

Here is a simple example to illustrate the problem by adding voting to 
the
user resource:

/users/1/votes
/users/email/martin@wawrusch.com/votes

Which one is the correct one? Software developers would guess the first 
one,
but machines would be clueless. And you would have to implement both 
routes
to be consistent, then you would have to document it, and then you would
hate programming :)
Posted by Heinz Strunk (cojones)
on 2011-10-07 18:14
makes sense, thanks a lot for the explanation :)
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.