PHP - анализ URI запроса REST и возврат результатов - PullRequest
1 голос
/ 15 января 2012

Так что это своего рода вопрос из двух частей, поэтому я заранее извиняюсь, если дублирую вопросы здесь.

Я нахожусь в процессе реализации REST API в PHP для веб-приложения, котороеЯ строю для работы.До сих пор я реализовал функцию, которая будет запрашивать таблицу базы данных пользователей и возвращать результаты в кодировке JSON.

Способ, которым я делаю запрос (который использует метод GET, кстати), делает запрос кURL: http://api.my-wicked-awesome-webapp.com/?method=getAllUsers.Результат затем JSON-кодируется и выводится в виде обычного текста на веб-странице.Теперь, это работает, и на самом деле нет ничего плохого в том, чтобы делать это таким образом, однако, на мой взгляд, этот формат выглядит немного неуклюжим.

Часть первая моего вопроса: как я могу разобрать запрос (в данном случае запрос GET) на URL-адрес, такой как http://api.my-wicked-awesome-webapp.com/users/, который будет выполнять то же самое, что и первый пример URL-адреса?

Часть вторая моего вопроса: как сейчас, если бы явведите первый пример URL в мой веб-браузер, результат JSON будет отображаться на веб-странице.Как бы я потянул эти данные на какую-то другую веб-страницу?Могу ли я использовать JQuery.ajax (), чтобы выполнить этот запрос и получить данные?И если да, то как мне поступить так?

Как всегда, если какой-либо из моих вопросов был сформулирован плохо, я буду более чем счастлив перефразировать что-либо.Заранее спасибо за любые ответы!

1 Ответ

1 голос
/ 15 января 2012
  1. Вам нужен mod_rewrite для файла .htaccess,

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^users/?$ index.php?method=getAllUsers [PT,L]
    

    Лучшее использование

    RewriteRule ^([^/]*)/?$ index.php?method=$1 [PT,L]
    

    Это сопоставит любой URL, например http://api.my-wicked-awesome-webapp.com/ANY_NAME/, с http://api.my-wicked-awesome-webapp.com/index.php?method=ANY_NAME

  2. Вы можете позвонить JQuery.ajax() со своего домена api.my-wicked-awesome-webapp.com.Но не с foreign.domain.com.Если вы хотите сделать это из другого домена, вам нужно использовать JSONP .

    Используя JSON, вы вызываете как,

    $.getJSON('http://api.my-wicked-awesome-webapp.com/users/', function(json){
    });
    

    Используя JSONP, вы вызываетеэто как

    $.getJSON(
        "http://api-my-wicked-awesome-webapp.com/?method=getAllUsers&callback=?",
        function(data) {
        }
    );
    

    И в index.php вам нужно обернуть вывод с $_GET['callback'];Что-то вроде echo "$_GET['callback'](".$JSON_DATA.")"; Это вызовет обратный вызов при загрузке.

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