Как создать RESTful API? - PullRequest
       1

Как создать RESTful API?

0 голосов
/ 16 января 2011

За последние несколько недель я узнал о разработке под iOS, что, естественно, привело меня в мир API.Теперь, просматривая в Интернете, я пришел к выводу, что использование архитектуры REST очень рекомендуется из-за ее предполагаемой простоты и простоты реализации.

Однако я действительно борюсь ссторона реализации REST.Я понимаю концепцию;использование HTTP-методов в качестве глаголов для описания действия запроса и ответа с помощью подходящих кодов ответа и т. д.Просто я не понимаю, как его кодировать.

Я не понимаю, как я сопоставляю URI с объектом.Я понимаю, что запрос GET для domain.com/api/user/address?user_id=999 вернет адрес пользователя 999 - но я не понимаю, где или как это сопоставление из / user / address с каким-либо методом, который запрашиваетбаза данных состоялась.

Это все закодировано в одном скрипте PHP?Будет ли у меня просто метод, который захватывает URI следующим образом:

$array = explode("/", ltrim(rtrim($_SERVER['REQUEST_URI'], "/"), "/"))

И затем циклически перебирая этот массив, сначала у меня будет запрос «пользователя», поэтому скрипт PHP направит мой запрос напользовательский объект, а затем вызвать метод адреса.Это то, что на самом деле происходит?

Главное, что я не понимаю, это то, как этот URI / пользователь / адрес? Id = 999 как-то разбивается и выполняется - действительно ли он разрешает код?

class user(id) {
   address() {
     //get user address
   }
}

Ответы [ 3 ]

1 голос
/ 16 января 2011

На самом деле API, который вы пытаетесь описать сейчас, это , а не RESTful . Существует множество источников, описывающих, как создавать RESTful API. Поэтому вы должны сначала определить свой API (с учетом того, как ваше клиентское программное обеспечение будет его использовать), а затем реализовать его. Я совершенно уверен, что практически любой RESTful API может быть реализован на PHP.

Здесь приведены некоторые другие советы о том, как создать RESTful API.

По моему мнению Интерфейс REST сервера GlassFish является хорошим примером дизайна RESTful.

1 голос
/ 16 января 2011

Это два вопроса.

Чтобы соблюдать HTTP-глаголы RESTful, вы должны запросить $_SERVER["REQUEST_METHOD"]. Он будет содержать обычный GET или POST, если не был получен более специализированный HTTP-запрос. Весь слух REST несколько вводит в заблуждение, а также в неправильном использовании глаголов HTTP только для маршрутизации.

В любом случае, сопоставление URL-адресов запроса с функциями может быть достигнуто двумя способами. Наиболее надежно использовать статическую карту, например массив, в котором перечислены шаблоны URL и методы назначения. Большинство PHP-фреймворков используют неявное отображение, например так:

$args = explode("/", trim($_SERVER['REQUEST_URI'], "/"));
$class = array_shift($args);
$method = array_shift($args);
call_user_func_array("$class::$method", $args);

Обратите внимание, что это плохой пример с точки зрения безопасности. Только разрешенные и специально подготовленные классы и методы должны иметь возможность получать запросы. Большинство фреймворков просто проверяют, был ли он получен из приемлемого базового класса после загрузки его по известному пути и / или создания экземпляра. Но статическая карта действительно предпочтительнее.

В любом случае, сопоставление или обработка регулярных выражений с помощью mod_rewrite также распространены. А для использования HTTP-глаголов просто включите его в качестве имени метода.

0 голосов
/ 18 апреля 2011

Взгляните на FRAPI - http://getfrapi.com/

Как говорится, сосредоточьтесь на своей бизнес-логике, а не на презентации.

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