Вызов моего API всегда возвращает мой файл index.php. Почему это? - PullRequest
0 голосов
/ 02 июня 2019

Я создал файл index.php в моей общей папке (Laravel), маршрут API в моем route / api.php с URL 'submit' и методом запроса post и контроллер с функцией submit(), которая выполняется при вызове API.

Я попытался проверить маршрут на Почтальоне со следующим URL:

http://mysite.local/api/submit

Это было проверено как POST запрос, но по какой-то причине он продолжает возвращать файл index.php .

Я даже добавил return "Test"; в начале моей функции submit() в моем контроллере, чтобы увидеть, была ли проблема с кодом внутри функции (надеюсь, что это имеет смысл, работая с моей терминологией).

Но опять же, когда я тестирую API на почтовом человеке, он все равно возвращает index.php .

Вот мой маршрут и контроллер:

Маршрут / api.php

Route::post('submit', 'SubmitFormController@submit');
// I've also tried the following:
// Route::post('submit', 'App\Http\Controllers\SubmitFormController@submit');

SubmitFormController.php

class SubmitFormController extends Controller {
    public function submit() {
        return "Test";

        /** .. More code below .. **/
    }
}

Я даже пытался изменить return "Test"; на return json_encode(['test' => 'testvar']);, думая, что это поможет. Но Почтальон все еще возвращает index.php .

Я предполагаю, что мой тракт API рассматривается как "каталог", но я могу ошибаться.


ОБНОВЛЕНИЕ: Я заметил еще одну странную (странную для меня) вещь.

Итак, когда я захожу на свой локальный хост, который является mysite.local, он берет меня к моему index.php файлу в моей общей папке, что и должно быть. ОДНАКО, когда я затем набираю что-то вроде mysite.local/skjah/asjdklasjd/asjdklasj (что явно бессмысленно, а не фактический каталог), он перенаправляет на index.php каждый раз.

Итак, я предполагаю, что, поскольку api\submit не является каталогом в public, он просто перенаправляется на index.php. Но я не уверен, почему, поскольку это работало в прошлом, и мой .htaccess был нетронут.

Надеюсь, эта информация поможет.


ОБНОВЛЕНИЕ: Просто возился с кодом и заметил, что проблема заключается в моем .htaccess, как указали некоторые из вас. Вот мой .htaccess (прямо из коробки, когда я делал проект, не трогал его).

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

Я изменил строку RewriteRule ^ index.php [L] на RewriteRule ^ index123.php [L], чтобы посмотреть, что произойдет, и вызов API для моей функции маршрута больше не работает. Что говорит мне, что это как-то связано с этим файлом.

Это все, что я получил и все еще ищу решение. Надеюсь, это поможет прояснить проблему.

Ответы [ 2 ]

1 голос
/ 02 июня 2019

Мой пользователь пока не может комментировать, так что ... здесь он идет как ответ ...

В общем, всякий раз, когда это происходит, это проблема конфигурации какого-то сервера страниц (в данном случае apache), а не php.

Учитывая, что вы упомянули "маршруты", я предполагаю, что вы используете "

Просмотрите ваш httpd.conf (и .htaccess), если у вас есть что-то вроде конфигурации ниже, которая будет отсутствовать или неправильно настроена (PS: время от времени они меняют конфигурации, проверяют, совместимы ли файлы в вашей конфигурации с системами, которые вы используете - версия apache и версия php)

# PHP5 module
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php"

PS: вызовы API (при использовании 80 или 443порт) не должен работать так же на этом компьютере, если они это делают, это имеет тенденцию к неправильной конфигурации файлов .htacces.

0 голосов
/ 08 июня 2019

Обнаружена проблема !!

Я пытался получить доступ к таблице "customer" в моем контроллере и других файлах, когда фактическое имя таблицы - "Customers".

GIANT FACEPALM

Надеюсь, это кому-нибудь поможет, проверьте правописание в своем коде, прежде чем закончить подчеркивать, как я, Ха-ха.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...