私は同じ状況にありましたが、今はこれに対する解決策を見つけました。これで、.json なしでリクエスト URL を入力でき、応答で Json データも取得できるようになりました。
アプリコントローラーで、応答を処理するネットワーク応答を追加します。
Cake\Network\Response を使用します。
その後、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 = '';
もう1つ行うことは次のとおりです。
Response.php (/vendor/cakephp/cakephp/src/Network/Response.php)
You need to edit one line at 586
echo $content;
to in function echo json_encode($content);
. _sendContent()
それでおしまい。これで、リクエスト URL を として設定できます
domain_name/project_name/users/index
。