Не удается получить доступ к конечной точке API CakePHP через ReactJS. Только через браузер - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь создать REST API для моего сервера через CakePHP.Я думал, что у меня это работает, поскольку я могу получать ответы JSON через веб-браузер, однако при попытке доступа к тому же маршруту через ReactJS действие Controllers фактически не запускается.

Чтение документов CakePHP Мне действительно нужно было только реализовать эти строки кода, чтобы заставить API работать (Согласно документам), и я сделал:

/config/routes.php

Router::scope('/', function($routes) { $routes->setExtensions(['json']); $routes->resources('Users'); });

Вот конечная точка API, к которой я хочу обратиться:

`public function signUp() {
     $file = fopen("error_log.txt", "w");
     $txt = "firing endpoint";
     $fwrite($file, $txt);
     $fclose($file);
     $response = $this->response;
     $responseText = [
         "status" => "200",
         "message" => "User added successfully"
     ];
     $response = $response->withType("application/json")
         ->withStringBody(json_encode($responseText));
     return $response;
}`

Здесь я успешно достигаю этой конечной точки через браузер.Мое сообщение журнала также появляется в error_log.txt файле

enter image description here

Вот где я делаю запрос через ReactJS:

handleRequest = () => { console.log('making request'); axios({ method: 'get', url: 'https://157.230.176.243/users/register.json', data: { email: this.state.email, password: this.state.password } })<br> .then(function(response) { console.log('got response'); console.log(response); })<br> .catch(function(error) { console.log('got error'); console.log(error); })<br> .then(function(data) { console.log('always executed'); console.log(data); }); }

Когда я делаю этот запрос через ReactJS, я получаю XHR failed loading: OPTIONS "https://157.230.176.243/users/register.json"

Также, когда я делаю этот запрос через ReactJS, мое сообщение журнала не записывается в error_log.txt

1 Ответ

1 голос
/ 25 марта 2019

Хорошо, я наконец понял, что случилось.Мой сервер разработки React работает на

157.230.176.243:3001

, и мой CakePHP API обслуживается на этом же сервере,

157.230.176.243

React didnМне не нравится, что я передаю полный URL-адрес API на вызов fetch()

.Я переключил свой код React на

url: "/users/register.json", и он отлично работает.

...