[Catalyst] deserializing key value pairs Catalyst::Controller::REST
Hani Anani
hanianani at gmail.com
Fri Jul 25 06:12:09 BST 2008
Hello,
I am having trouble getting deserialize to work correctly in the REST
interface that i am building out.
Here's the info:
the debug message i get when running the catalyst server prints out:
[debug] I would have deserialized, but there was nothing in the body!
looks like nothing is returned in the call made by the REST JSON plugin
line 34 $c->request->body
but also in the debug log is the following:
[debug] Body Parameters are:
.-------------------------------------+------------------------------------=
--.
| Parameter | Value =
|
+-------------------------------------+------------------------------------=
--+
| destination_account | 2 =
|
| ingestor_id | 10 =
|
| source_account | 1 =
|
| source_id | 1 =
|
'-------------------------------------+------------------------------------=
--'
Here's the javascript that submits the request:
var sUrl =3D "/rest/db/source_destination_map/";
var postData =3D "source_account=3D1&destination_account=3D2&ingestor_id=3D=
10&source_id=3D1"
function makeRequest(){
YAHOO.util.Connect.initHeader('Content-Type', 'application/json', null);
YAHOO.util.Connect.initHeader('X-authkey',
'd72fc6813c5618876309e3f8cbc7b741', null);
var request =3D YAHOO.util.Connect.asyncRequest('POST', sUrl,
callback, postData);
YAHOO.log("Initiating request; tId: " + request.tId + ".", "info",
"example");
}
and trying to access $c->request->data in my REST
here's the begin:
sub begin : ActionClass('Deserialize') {
my ($self, $c) =3D @_;
if ( $self->_auth_private_web_service( $c ) ){
}else{
$c->res->status(403);
$c->res->body("You are not authorized to use the private REST API."=
);
$c->detach();
}
}
and the method:
sub source_destination_map_POST {
my ($self, $c) =3D @_;
my ( $source_destination_map, $source_ingestor_destination_map );
my @params =3D %{$c->request->params};
my $l =3D $c->request->body;
print STDERR "BODY " . Dumper $l;
...
returns the following:
BODY $VAR1 =3D undef;
So, I can see that the request object also has the body_params method
which I am guessing is where the key value pairs of the parameters is
being passed, but the JSON deserializer
seems to try to retrieve it from $c->request->body,
As a result attempting to access things via $c->request->data in my
source_destination_map_POST method does not work.
many thanks for looking at this,
-hani
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20080724/ee635=
96e/attachment.htm
More information about the Catalyst
mailing list