Страницы

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

четверг, 9 января 2020 г.

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

#веб_программирование #api #терминология


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

Так вот вопрос: Сайты это тоже API для взаимодействия между браузером и сервером?
(не совсем корректно сформулированный вопрос, но надеюсь смысл понятен)
    


Ответы

Ответ 1



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

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

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