Страницы

Поиск по вопросам

понедельник, 26 ноября 2018 г.

Сайт это тоже API?

Гуглил о том что такое API, и везде примеры сводятся к тому, что вот есть сайт и к нему можно приделать API чтобы другие приложения могли взаимодействовать с сайтом. Но никто не пишет о том, является ли API сам сайт, когда клиент из браузера отправляет к нему запрос. Ведь по сути когда я в браузере открываю сайт example.com то, сам браузер обращается к API сайта и получает text/html ответ т.е. получается взаимодействие двух приложений.
Так вот вопрос: Сайты это тоже API для взаимодействия между браузером и сервером? (не совсем корректно сформулированный вопрос, но надеюсь смысл понятен)


Ответ

Сложность вопроса в том, что термин API весьма всеобъемлющий и не очень чёткий.
Ответ сильно зависит от контекста.
С чисто теоретической точки зрения да, можно считать и так. Пользователь всё-таки не может взаимодействовать с сайтом сколько-нибудь напрямую. Посему, можно считать, что сайт как множество допустимых HTTP-запросов к нему, это API между сервисом, который он предоставляет, и браузером. Причём поскольку в ответах API описываются возможные запросы, он ещё и, в некотором смысле, самодокументируемый. Это круто.
В реальном коде сервис и его "браузерный API" (называемый иногда "веб-интерфейсом") могут быть практически неразделимы. Обычно это плохо. Но может быть простительно, если других интерфейсов не ожидается, и/или если сервис сам по себе является интерфейсом к чему-то ещё.
Но если рассуждать так и далее, то и выполняемые вами (человеком; вы же человек?) действия с браузером происходят через API: интерфейсы ввода-вывода ОС. Тут, впрочем, API уже заканчиваются и начинается аппаратный интерфейс.
Но это с вашей позиции. Существуют также программно управляемые браузеры (был специализированный PhantomJS, сейчас это штатно существует и в Chrome, есть и другие), которые для серверов очень похожи на обычных пользователей. Для управляющих ими программ множество возможных запросов к сайту является API в самом прямом смысле: программа взаимодействует через этот интерфейс с приложением.

А на практике, в веб-разработке обычно считается, что браузер — пользователь. То, что за ним ещё какие-то интерфейсы, уже не в её области. И там принято разбивать HTTP-сервисы на две группы:
сайты: с которыми браузеры взаимодействуют более-менее напрямую, без дополнительных механизмов API: с которыми напрямую взаимодействуют другие приложения, самостоятельные (автоматизация действий штатными способами или взаимодействие между сервисами) или SPA (запускаемые из кода, доставленного сайтом)

Комментариев нет:

Отправить комментарий