В чем разница между API REST и нормальным API (который печатает ответ JSON)?
Нет никакой разницы. REST описывает способ взаимодействия с HTTP-сервером, а не то, что сервер должен вернуть в ответ. Большинство веб-приложений взаимодействуют с серверной стороной с помощью запросов POST или GET с любой дополнительной информацией, необходимой для выполнения запроса в форме отправки для POST или строки запроса для GET. Поэтому, если вы хотите что-то удалить с сервера, они обычно делают POST с формой, содержащей данные, указывающие ресурс вместе с инструкцией по его удалению.
Однако HTTP реализует методы (также известные как глаголы), отличные от GET или POST. Он также реализует, в частности, HEAD (возвращает те же заголовки, которые вы бы сделали для GET, но без тела ответа), PUT (возьмите тело запроса и сохраните его содержимое по любому URL-адресу, на который был сделан запрос PUT), и УДАЛИТЬ (удалить любой ресурс по указанному URL). Интерфейс REST просто использует эти дополнительные глаголы для определения значения запроса на сервере.
Браузеры обычно поддерживают только GET и POST для «обычных» (не XHR) запросов, но такие инструменты, как Curl, могут выдать полный набор HTTP-глаголов. Вы также можете использовать дополнительные глаголы с XHR-методами, такими как AJAX.
Вам все равно придется предоставлять традиционный API без REST для браузеров, если вы не используете javascript и XHR для использования вашего приложения.
REST в основном просто ссылается на использование протокола HTTP так, как он был предназначен. Используйте метод GET
HTTP для URL-адреса для получения информации, возможно, в разных форматах на основе заголовков HTTP Accept
. Используйте метод POST
HTTP для создания новых элементов на сервере, PUT
для редактирования существующих элементов, DELETE
для их удаления. Сделайте API-идентификатор, т. Е. Повторение одного и того же запроса с той же информацией должно дать тот же результат. Структурируйте свои URL-адреса иерархически и т. Д.
REST просто является руководящим принципом использования URL-адресов и протокола HTTP для структурирования API. В нем ничего не говорится о форматах возврата, что также может быть JSON.
Это противоречит, например, API, которые отправляют двоичные или XML-сообщения в назначенный порт, не используя различия в методах HTTP или URL-адресах вообще.