[dancer-users] Why is Dancer2 mixing POST and GET params?
Gabor Szabo
gabor at szabgab.com
Sat Jan 10 10:49:34 GMT 2015
hi,
In the strange case of sending a POST request to
http://localhost:5000/echo?a=1&b=2
with the POSTed values b=4 and c=3
the param() function of dancer will return 1 for a, 3 for c as expected and
4 for b.
So it overrides the b received in the URL by the b received in the POST,
but it also supplies the value for a which is only available in the URL.
On the other hand, if the same key is supplied multiple times in the URL
(e.g.
http://localhost:5000/echo?a=1&b=2&a=6
then param('a') will return an array reference.
I wonder wouldn't it be better to have separate param() functions for
values received in the URL and values received in the POST request?
Or in other words, could someone explain why was the decision to unite
these input channels?
Gabor
ps. This is the code I used:
package App::Try;
use Dancer2;
our $VERSION = '0.1';
use Data::Dumper;
get '/' => sub {
'<form method="POST" action="/echo?a=1&b=2&a=6"><input name="c"
value="3"><input name="b" value="4"><input type="submit">';
};
post '/echo' => sub {
return sprintf "%s - %s - %s", Dumper(param('a')), param('b'),
param('c');
};
true;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20150110/250e5584/attachment.html>
More information about the dancer-users
mailing list