我有同样的情况,但现在我找到了解决方案。现在我可以在没有 .json 的情况下放置请求 url,并且也可以获取 Json 数据作为响应。
在 App 控制器中添加将处理您的响应的网络响应。
使用蛋糕\网络\响应;
之后,您需要将 Json 输入转换为数组,因此将此getJsonInput()
函数放入您的AppController
并调用它initialize()
public function getJsonInput() {
$data = file_get_contents("php://input");
$this->data = (isset($data) && $data != '') ? json_decode($data, true) : array();
}
现在在您的控制器中,您拥有所有发布数据$this->data
。因此您可以访问所有输入。这是一个例子:
class UsersController extends AppController {
public function index() {
if ($this->request->is('post')) {
//pr($this->data); //here is your all inputs
$this->message = 'success';
$this->status = true;
}
$this->respond();
}
}
现在在你的函数结束时,你需要调用respond()
定义在AppController
public function respond() {
$this->response->type('json'); // this will convert your response to json
$this->response->body([
'status' => $this->status,
'code' => $this->code,
'responseData' => $this->responseData,
'message'=> $this->message,
'errors'=> $this->errors,
]); // Set your response in body
$this->response->send(); // It will send your response
$this->response->stop(); // At the end stop the response
}
AppController
在as中定义所有变量
public $status = false;
public $message = '';
public $responseData = array();
public $code = 200;
public $errors = '';
还有一件事是:
在Response.php (/vendor/cakephp/cakephp/src/Network/Response.php)
您需要在 586 处编辑一行
echo $content;
到echo json_encode($content);
in _sendContent()
功能。
而已。现在您可以将请求 url 设置为
domain_name/project_name/users/index
.