API Flashcards
How to work API?
HTTP
Протокол передачи гипертекста
METHOD
Что сделать на сервере?
URL
Адрес ресурса
GET
Просит сервер получить ресурс
POST
Просит сервер создать новый ресурс
PUT
Просит сервер изменить имеющийся ресурс
DELETE
Просит сервер удалить ресурс
HEADERS
Уточняют некоторую информацию о запросе, сообщая дополнительный контекст или ограничивая его некоторыми логическими условиями
BODY
Данные, которые клиент хочет отправить серверу
Клиент
Программа, которая обменивается данными с сервером
Какие есть форматы данных в HTTP запросах?
XML и JSON
Что представляет собой JSON?
JSON представляет собой словарь вида:
{
“crust”: “original”,
“toppings”: [“cheese”, “pepperoni”, “garlic”],
“status”: “cooking”
}
Что представляет собой XML?
XML представляет собой расширяемый язык разметки в виде блоков. Блок называется узел или нода(node)
Пример:
<order>
<crust>original</crust>
<toppings>
<topping>cheese</topping><topping>pepperoni</topping><topping>garlic</topping>
</toppings>
<status>cooking</status>
</order>
Headers
Accept: …
Определяет запрошенный формат для ответа клиенту.
Т.е. Если клиент может принять только JSON, тогда Accept: application/json
Headers
Content-type: …
Указывает на то, какой формат данных отправляется на сервер.
Т.е. Если клиент хочет отправить на сервер JSON, тогда Content-type: application/json
URI
Имя и адрес ресурса в сети, включает в себя URL и URN
Т.е. если URL = yandex.ru, а URN = /images.png
Тогда URI = yandex.ru/images.png
URN
Имя ресурса в сети, определяет только название ресурса, но не говорит, как к нему подключиться
Из каких частей состоит URI?
URI содержит в себе следующие части:
1) Схема (scheme) - показывает на то, как обращаться к ресурсу, чаще всего это сетевой протокол (http, ftp, ldap)
2) Иерархическая часть (hier-part) - данные, необходимые для идентификации ресурса (например, адрес сайта)
3) Запрос (query) - необязательные дополнительные данные ресурса (например, поисковой запрос)
4) Фрагмент (fragment) – необязательный компонент для идентификации вторичного ресурса (например, место на странице)
Общий синтаксис URI выглядит так:
URI = scheme “:” hier-part [ “?” query ] [ “#” fragment ]
Из каких частей состоит URL?
URL содержит следующую информацию:
1) Протокол, который используется для доступа к ресурсу – http, https, ftp
2) Расположение сервера с использованием IP-адреса или имени домена - например, wiki.merionet.ru - это имя домена. https://192.168.1.17 - здесь ресурс расположен по указанному IP-адресу
3) Номер порта на сервере. Например, http://localhost: 8080, где 8080 - это порт.
4) Точное местоположение в структуре каталогов сервера. Например - https://wiki.merionet.ru/ip-telephoniya/ - это точное местоположение, если пользователь хочет перейти в раздел про телефонию на сайте.
5) Необязательный идентификатор фрагмента. Например, https://www.google.com/search?ei=qw3eqwe12e1w&q=URL, где q = URL - это строка запроса, введенная пользователем.
Синтаксис:
[protocol]://www.[domain_name]:[port 80]/[path or exaction resource location]?[query]#[fragment]
Аутентификация
Процедура проверки личности
В случае интернета - пользователь вводит свой логин и пароль
Что требует базовая аутентификация?
Только логин и пароль
Headers
Authorization:
В данном заголовке указываются данные необходимые для авторизации на сервере
Аутентификация с помощью ключа API
Пользователь получает доступ к данным с помощью сгенерированного ключа.
Ключ указывается в заголовке, url-адресе или даже в данных
OAuth2
Протокол авторизации, позволяющий выдать права на доступ к данным пользователя одному сервису к другому сервису
Авторизация
Определяет разрешения на доступ к различным ресурсам.
Т.е. это некие права пользователя в разрезе ролевой модели (пользователь/поставщик/разработчик/администратор)
SOAP
Это схема взаимодействия на основе XML, которая имеет стандартизованные структуры для запросов и ответов.
REST
это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Архитектурный стиль – это набор согласованных ограничений и принципов проектирования, позволяющий добиться определённых свойств системы.
Синхронное взаимодействие
Система не может продолжить работу, пока не получит ответ от другой системы
Ассинхронное взаимодействие
Две системы работают параллельно. Если ответ от системы 2 не получен, то это не мешает продолжить работу системе 1.
Ассинхронное реактивное взаимодействие
Клиент А отправляет запрос серверу Б, сервер Б принимает запрос и отправляет клиенту А ссылку, куда придет ответ, когда он будет готов
Ассинхронное ассинхронное взаимодействие
Клиент А постоянно отправляет запросы серверу Б, чтобы узнать готов ли его запрос Х
4 стиля взаимодействия приложений
1)Передача файлов (File Transfer). Приложения обмениваются между собой данными через файлы с ними: одно создаёт файлы с данными, которые нужны другим, и само использует файлы, созданные другими.
2) Общая база данных (Shared Database). Данные, нужные разным приложениям, хранятся в одной базе. Все приложения обращаются к этой базе, чтобы получить данные.
3)Удалённый вызов процедур (Remote Procedure Invocation — RPI или Remote Procedure Call — RPC). Каждое приложение описывает для других все процедуры, которые можно вызвать удалённо (например, с другого компьютера), чтобы обменяться данными или дать указания. Процедурой называют часть программного кода, которая выполняет определённую функцию. Вызовом процедуры — выполнение функции.
4) Обмен сообщениями (Messaging). Приложения связаны общей системой обмена сообщениями. Через неё они передают друг другу данные и указания.