#веб_программирование #api #терминология
Гуглил о том что такое API, и везде примеры сводятся к тому, что вот есть сайт и к нему можно приделать API чтобы другие приложения могли взаимодействовать с сайтом. Но никто не пишет о том, является ли API сам сайт, когда клиент из браузера отправляет к нему запрос. Ведь по сути когда я в браузере открываю сайт example.com то, сам браузер обращается к API сайта и получает text/html ответ т.е. получается взаимодействие двух приложений. Так вот вопрос: Сайты это тоже API для взаимодействия между браузером и сервером? (не совсем корректно сформулированный вопрос, но надеюсь смысл понятен)
Ответы
Ответ 1
Сложность вопроса в том, что термин API весьма всеобъемлющий и не очень чёткий. Ответ сильно зависит от контекста. С чисто теоретической точки зрения да, можно считать и так. Пользователь всё-таки не может взаимодействовать с сайтом сколько-нибудь напрямую. Посему, можно считать, что сайт как множество допустимых HTTP-запросов к нему, это API между сервисом, который он предоставляет, и браузером. Причём поскольку в ответах API описываются возможные запросы, он ещё и, в некотором смысле, самодокументируемый. Это круто. В реальном коде сервис и его "браузерный API" (называемый иногда "веб-интерфейсом") могут быть практически неразделимы. Обычно это плохо. Но может быть простительно, если других интерфейсов не ожидается, и/или если сервис сам по себе является интерфейсом к чему-то ещё. Но если рассуждать так и далее, то и выполняемые вами (человеком; вы же человек?) действия с браузером происходят через API: интерфейсы ввода-вывода ОС. Тут, впрочем, API уже заканчиваются и начинается аппаратный интерфейс. Но это с вашей позиции. Существуют также программно управляемые браузеры (был специализированный PhantomJS, сейчас это штатно существует и в Chrome, есть и другие), которые для серверов очень похожи на обычных пользователей. Для управляющих ими программ множество возможных запросов к сайту является API в самом прямом смысле: программа взаимодействует через этот интерфейс с приложением. А на практике, в веб-разработке обычно считается, что браузер — пользователь. То, что за ним ещё какие-то интерфейсы, уже не в её области. И там принято разбивать HTTP-сервисы на две группы: сайты: с которыми браузеры взаимодействуют более-менее напрямую, без дополнительных механизмов API: с которыми напрямую взаимодействуют другие приложения, самостоятельные (автоматизация действий штатными способами или взаимодействие между сервисами) или SPA (запускаемые из кода, доставленного сайтом)
Комментариев нет:
Отправить комментарий