我正在使用Cakephp 2.x创建一个API,需要POST请求才能将一些数据发布到服务器,但是当我使用127.0.0.1/appname/api/confirm
向code=123
发布邮件时使用$_POST
post参数my Router::connect('/api/confirm', array('controller' => 'awesomeController', 'action' => 'confirm'));
<?php
class AwesomeController extends AppController {
public function confirm() {
$this->autoRender = false;
$this->layout = 'ajax';
pr($_POST);
}
}
?>
是一个空数组。
我的路线有效,我可以看到我在控制器中声明和输出的变量,并且我已经通过使用chrome开发者控制台检查网络数据检查了参数是否在请求中传递。
$_POST
我的端点让get请求工作正常,它似乎只是POST数据。
不太确定为什么$this->request->query
$this->request->data
$this->request->params
甚至无法使用,我确信这是一些我忽略的可笑的傻事!
**编辑**
我尝试了以下但没有成功:
{{1}}
我有另一种方法,我使用GET和?parameter = value等,我可以使用上述调用之一来检索数据。
答案 0 :(得分:0)
在这种情况下,变量应该在
中$this->request->query
尝试使用api/confirm?code=123
等网址,它们将位于request->query
答案 1 :(得分:0)
我可能错了,因为我对cakePHP很新,但是因为你设置了:
$this->autoRender = false;
因此视图不会自动呈现以将视图设置为ajax布局。 没有必要打电话:
$this->render();
将布局设置为上述here?
嗯,希望它有所帮助。
答案 2 :(得分:0)
如果有一天有人通过谷歌搜索来到这里,就会遇到同样的问题。
有一个REST控制器,使用URL /rest/something/cool.json
调用在RestController.php中调用的方法有输出,但没有POST,没有REQUEST。
尝试使用code = 123,发送直接JSON,使其工作的唯一方法是将Content-Type设置为application / json并发送实际工作的JSON:Cake似乎在任何事情之前验证,发送原始数据似乎无用