ZF-9374: Zend_Rest_Server does not properly handle optional parameters when anonymous (arg1, etc) parameters are passed in
Description
When anonymous parameters are passed in, and one or more optional parameters are missing, the default values are not correctly filled in, and the call fails with a 'missing arguments' error message.
Comments
Posted by Jonathan Csanyi (jcsanyi) on 2010-03-08T17:51:19.000+0000
There was already a unit test for this functionality, but the expected value was incorrectly hard-coded backwards, so the failure was counting as a pass.
Posted by Jonathan Csanyi (jcsanyi) on 2010-03-08T17:53:36.000+0000
Attached patch fixes Zend_Rest_Server, and accompanying unit tests.
Posted by Jonathan Csanyi (jcsanyi) on 2010-03-08T18:00:28.000+0000
'sorry.. original diff had a misleading/incorrect comment. This is the correct diff.
Posted by Claude Duvergier (cduv) on 2010-07-15T03:23:47.000+0000
I agree with Jonathan Csanyi.
I ran into that problem an thought {{Zend_Rest_Client}} was the cause as it uses the "arg1" query parameter name when only one argument is passed to the server (see ZF-4910). But is seems that {{Zend_Rest_Server}} is guilty.
With the following server PHP code:
The following client PHP code:
Issues the following request: {{server.php?method=myMethod&myMethod=5&arg1=5}}
Which is handled by {{Zend_Rest_Server::handle()}} as
{color:green}Which is correct.{color}
And the other following client PHP code:
Issues the following request: {{server.php?method=myOtherMethod&myOtherMethod=5&arg1=5}}
Which is handled by {{Zend_Rest_Server::handle()}} as
{color:red}Which is incorrect.{color}
The solution would be to either use 0-based array everywhere, or the given "library/Zend/Rest/Server.php" DIFF file [^trunk-correct.diff].