Переписать URL в RESTful API - PullRequest
       2

Переписать URL в RESTful API

0 голосов
/ 15 февраля 2019

Мне нужно создать API в PHP, чего я никогда раньше не делал.У меня есть index.php в моей корневой папке, которая содержит форму.Нажатие кнопки активирует AJAX-запрос на чтение всех записей, и для отправки данных можно заполнить форму.У меня также будет DELETE и обновление.

ajaxcall.js

 // GET to retrieve
 var req;
   req=new XMLHttpRequest();
   req.open("GET", 'src/api/v1/posts',true);
   req.send();

  //post with ajax
    $.ajax({
        type:"POST",
        url: "src/api/v1/posts",
        data: test,
        ContentType:"application/json",

        success:function(){
            alert('successfully posted');
        },
        error:function(){
            alert('Could not be posted');
        }

    });

У меня есть папка src / api / v1, и я хочу файл конечной точки api.PHP, который обрабатывает различные запросы.Теперь мне нужно переслать все вызовы AJAX в api.php, который находится внутри этой папки v1.Я создал .htaccess, который также хранится в src / api / v1.Я добавил следующее:

.htaccess

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule src/api/v1/(.*)$ src/api/v1/api.php?request=$1 [QSA,NC,L]

К сожалению, я не нашел 404, он просто незапишите URL в api.php, чтобы он искал / posts, которых не существует.Что я делаю неправильно?

1 Ответ

0 голосов
/ 15 февраля 2019

На самом деле вы должны хранить .htaccess в корневом каталоге, иначе Apache не будет знать, что в /src/api/v1 есть .htaccess, поэтому apache будет искать каталог src/api/v1/posts и, как таковой, не найден 404ошибка будет возвращена.

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule src/api/v1/(.*)$ /src/api/v1/api.php?request=$1 [QSA,NC,L]
</IfModule>

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