В чем разница RESTful API и REST API
Что проверяют
Слышите ли вы разницу между «использует HTTP» и «соблюдает ограничения REST». Вопрос-ловушка: многие отвечают, что это одно и то же.
Как отвечать
Формально REST это архитектурный стиль с набором ограничений, а RESTful это прилагательное: API называют RESTful, если он этим ограничениям следует.
На практике разница в строгости. «REST API» в вакансиях и статьях обычно значит просто «HTTP и JSON». RESTful подразумевает, что соблюдены ограничения:
- ресурсы адресуются существительными, действия выражаются методами HTTP;
- сервер не хранит состояние между запросами;
- ответы помечены как кэшируемые или нет;
- интерфейс единообразен, представление отделено от сущности;
- в строгом прочтении есть и HATEOAS: ответ содержит ссылки на возможные следующие действия, и клиент ходит по ним, а не по зашитым адресам.
Именно HATEOAS почти никто не делает, поэтому по классификации Ричардсона большинство «REST API» останавливается на третьем уровне из четырёх, а часть и на втором.
Практичный ответ звучит так: разницы в смысле нет, есть разница в степени соблюдения. Если спрашивают на собеседовании, стоит назвать ограничения и честно сказать, какие из них ваш API выполняет, а какие нет.
Где спотыкаются
Говорят, что это разные технологии.
Не могут назвать ни одного ограничения REST.
Не знают про HATEOAS и уровни зрелости Ричардсона.
Считают RESTful синонимом «отдаёт JSON».