Двумя ключевыми альтернативами «RESTful» могут быть традиционные html-формы или более формальный протокол RPC, реализованный поверх HTTP, например XML-RPC или SOAP.
Основным преимуществом первого является то, что он может быть вызван через веб-браузер без кода клиента вообще; но если приложение не разработано вдумчиво, зачастую довольно сложно управлять таким интерфейсом от пользовательского клиента; который часто должен устанавливать куки для аутентификации и задавать аргументы, которые ему не интересны. Для этого вида API также нет понятия типов данных, все текстовое.
Последнее имеет преимущество в том, что вы сразу же приступите к работе; Вы можете просто написать обычные функции на python с декоратором, и они доступны для клиентов, имеющих соответствующие клиентские библиотеки. Основным недостатком также является то, что для этого обычно требуется, чтобы у клиента была такая библиотека. Такие вещи, как soap или xml-rpc, обычно не подходят для приложений в браузере или для устройств с ограниченными ресурсами.
RESTful - это своего рода средний путь, который сочетает в себе множество преимуществ обоих. Поскольку семантика определяется исключительно в терминах HTTP, любой клиент, способный выдавать HTTP, может использовать RESTful API. HTTP гораздо более гибок, чем простые старые веб-формы, обычно с точки зрения предоставления Content-Type
запросу или ответу, который поддерживает необходимую структуру. К сожалению, на самом деле не существует единого стандарта, определяющего, как клиенты или сервисы RESTful должны представлять свои данные, поэтому с обеих сторон необходимо немного изменить настройки, чтобы все работало наилучшим образом. Иногда гибкость означает, что вы тратите больше времени на настройку API точно так же, как если бы вы использовали другой интерфейс, но это часто приводит к более тонкой и менее утечке абстракции.
Существует несколько стандартов или стандартов де-факто, которые также являются хорошими моделями интерфейсов RESTful, таких как json-rpc и протокол публикации Atom.