Руководство по началу работы с API
После раздела «Обзор API» обычно идет раздел «Начало работы», в котором подробно описываются первые шаги, которые пользователи должны пройти для использования API. Этот раздел часто включает весь процесс от начала до конца, сжатый настолько просто, насколько это возможно.
Цель раздела “Начало работы”
Раздел «Начало работы» это как Hello World для разработчиков, только с API. “Начало работы” ведет за руку пользователя от начала до конца при создании простейшего возможного вывода с системой. Для Hello World самым простым выводом является сообщение «Hello World». Для API это может быть успешный ответ на самый простой запрос.

И Hello World и “Начало работы” преследуют одну и ту же цель: показать пользователю, как использовать инфраструктуру, API или какую-либо другую систему, для получения простого и легкого результата, чтобы пользователи получили полное представление о работе системы, API и т.д.
В качестве примера можно взять общий базовый сценарий использования API и показать, как создать запрос, а также какой ответ возвращается. Если разработчик сможет успешно выполнить такой вызов, значит и с остальными не должно возникнуть проблем.
Раздел “Начало работы” может содержать следующие пункты:

- Войти в аккаунт;
- Получить API ключ;
- Создание запроса
- Оценка ответа.
Поместите ссылку на раздел “Начало работы” на домашней странице документации. Сделайте так, чтобы разработчики могли с легкостью использовать API для получения определенного результата. Если подразумевается использование предварительно подготовленных учетных записей или конфигураций настройки, нужно продумать и это.
Кнопка Run in Postman
В разделе “Начало работы” можно рассмотреть возможность добавления кнопки Run in Postman . (Postman — это клиент REST API GUI, который мы изучили ранее в разделе Отправка запросов в Postman.) Если есть конечные точки API, интегрированные с Postman, можно экспортировать свои коллекции Postman в виде виджета для встраивания в HTML-страницу.
Run in Postman это кнопка, которая при нажатии импортирует информацию об API в Postman, чтобы пользователи могли выполнять вызовы с помощью клиента Postman. Таким образом, кнопка Run in Postman позволяет импортировать интерактивный пробный интерфейс API для конечных точек на веб-страницу.
Чтобы добавить кнопку Run in Postman , можно импортировать спецификацию OpenAPI в Postman или ввести информацию об API вручную. Стоит изучить раздел “Postman/docs”, как создать кнопку Run in Postman .
Множество демонстраций Run in Postman можно посмотреть здесь. Многие из этих демонстраций перечислены в сети API Postman.

Вот демо Run in Postman с использованием конечной точки weather API OpenWeatherMap (с которой мы работали раннее ):
Если нажать на кнопку, будет предложено открыть коллекцию в клиенте Postman:

Postman предоставляет мощный клиент REST API, с которым знакомы многие разработчики. Postman позволяет пользователям настраивать ключ и параметры API и сохранять эти значения. Хотя Postman не имеет возможности вызова в браузере, как в Swagger UI, во многих отношениях клиент Postman более полезен, поскольку позволяет пользователям настраивать и сохранять сделанные ими запросы. Postman — тот инструмент, который внутренние разработчики часто используют для хранения запросов API при тестировании и изучении функциональности.
Особенно, если ваши пользователи уже знакомы с Postman, Run in Postman является хорошим вариантом для пользователей, чтобы опробовать API, потому что он позволяет пользователям легко генерировать необходимый код для отправки запросов практически в любой язык. Это дает пользователям отправную точку, где они могут опираться на информацию для создания более подробных и настраиваемых вызовов.
Если в документации еще нет функции Try it out , кнопка Run in Postman предоставляет такую интерактивность простым способом, не требуя жертв со стороны единственного источника знаний для документации.
Недостатком является то, что в Postman не попадают описания параметров и конечных точек. Кроме того, если пользователи незнакомы с Postman, им может быть трудно понять, как им пользоваться. Редакторы Try it out , которые запускаются непосредственно в браузере, как правило, более просты и лучше интегрируют документацию.
Примеры разделов “Начало работы”
Ниже приведены несколько примеров разделов “Начало работы” в API. Если сравнить различные разделы «Начало работы», можно увидеть, что некоторые из них являются подробными, а некоторые — высокоуровневыми и краткими. В общем, чем дольше можно вести разработчика за руку, тем лучше. Тем не менее, раздел должен быть кратким, а не многословным с другой документацией. Ключевым моментом является то, чтобы показать пользователю полный, от и до, процесс работы с API.
Paypal

“Начало работы” Paypal содержит довольно много деталей, начиная с авторизации, запросов и других деталей до первого запроса. Хотя этот уровень детализации не так краток, он помогает сориентировать пользователей на необходимую им информацию. Чистый и понятный формат.

На стартовой странице Twitter есть несколько разделов, посвященных началу работы, для разных целей разработки. Текст лаконичен и понятен. В разделе размещены ссылки на другую документацию для получения более подробной информации. В целях краткости можно следовать такой же стратегии — быть кратким и ссылаться на другие страницы, которые содержат более подробную информацию.
Parse Server

Раздел “Начало” работы в Parse Server содержит большое количество деталей и подробное описание различных этапов. Для более подробных шагов по подключению вашего приложения и запуску сервера в другом месте, в разделе размещена ссылка на дополнительную информацию.
Adsense

“Начало работы” Adsense выделяет некоторые основные предпосылки для начала работы на платформе. После того, как вы настроитесь, он предоставляет «краткое руководство по началу работы». Такое руководство знакомит пользователей с простым сценарием от начала до конца, помогая им понять продукт и его возможности.
Aeris

Начало работы в сервисе погоды Aeris предоставляет информацию для настройки приложения, а затем делает запрос на одном из нескольких популярных языков. Хотя показ кода на определенных языках, несомненно, более полезен для программистов, использующих данный язык, примеры кода могут быть неуместны для других пользователей (например, разработчики Java могут найти код Python неуместным, и наоборот). Фокусировка на определенном языке часто является компромиссом.
Watson and IBM Cloud

В разделе “Начало работы” Watson и IBM Cloud перечислены три шага. Тем не менее, это не полное руководство по началу работы. Пользователь может только выбрать сервис для своего проекта. В итоге кодировать начинаем с помощью Watson Dashboard.
В идеале, раздел “Начало работы” должен помочь пользователю увидеть ощутимые результаты, но возможно ли это или нет, зависит от API.
Практическое занятие: Раздел “Начало работы”
В своем найденном опен-сорс проекте найдем раздел “Начало работы” и ответим на следующие вопросы:
- Есть ли у API раздел “Начало работы”?
- Описан ли процесс начала работы от и до в разделе?
- Можно ли успешно выполнить все шаги в разделе?
- Сколько времени занимает освоение раздела?
- Отобразятся ли предположения о вашем техническом уровне в документации при попытках упростить инструкцию?
Руководство по использованию REST API
Платформа@Mail.Ru предоставляет возможность внешним разработчикам программными средствами получать и записывать данные в Mail.Ru. Одним из способов такого взаимодействия вляется использование REST API.
Что такое REST API
REST API определяет набор функций, к которым разработчики могут совершать запросы и получать ответы. Взаимодействие происходит по протоколу HTTP. Преимуществом такого подхода является широкое распространение протокола HTTP, поэтому REST API можно использовать практически из любого языка программирования.
REST API предназначено, в основном, для запросов с внешних серверов к серверам Mail.Ru. Для запросов с веб-клиентов — клиентской части социального приложения или от сайта — существуют JS API и Flash-библиотека, которые более удобны и просты в использовании.
Как использовать API
Все вызовы методов API — это GET или POST HTTP-запросы к URL http://www.appsmail.ru/platform/api с некоторым набором параметров. Вы выбираете в документации нужный метод, например, users.getInfo rest , формируете запрос согласно документации метода, и осуществляете этот запрос. В ответ на запрос вы получаете его результат, который также описан в документации каждой функции. Кодировка результата — UTF-8.
Например, на PHP для осуществления такого запроса можно использовать cURL, на Perl — LWP::Simple, на Python — urllib, использовать cURL из командной строки и даже просто ваш браузер.
Обратите внимание на готовые библиотеки, возможно, для вашего языка программирования уже существует реализация REST API.
Данные запроса могут передаваться в виде query-строки (после знака ?) при использовании метода GET, либо в теле POST-запроса. Помните, что в случае GET-запроса, параметры должны быть закодированы с помощью URL encoding.
На данный момент, API не делает различий между GET- и POST-запросами. Тем не менее, помните, что существует ограничение на длину URL запроса — 2048 символов. Поэтому мы рекомендуем вам выполнять запросы на получение информации с помощью метода GET (они обычно легко умещаются в ограничение), а запросы на изменение данных — загрузку фотографии, новый пост в «Что нового» или гостевую книгу — с помощью метода POST. Так вы не будете ограничены длиной запроса, кроме того, такое использование больше соответствует спецификации протокола HTTP.
Параметры запроса
В каждом запросе должен присутствовать набор обязательных параметров. Также для каждой функции в ее документации определены дополнительные параметры, нужные только для этой функции. Текстовые значения параметров должны быть переданы в кодировке UTF-8. Одинаковые для всех функций параметры перечислены ниже.
| Имя | Тип | Описание |
|---|---|---|
| method | string | название вызываемого метода, например, users.getInfo; обязательный параметр |
| app_id | int | идентификатор приложения; обязательный параметр |
| sig | string | подпись запроса; обязательный параметр |
| session_key | string | сессия текущего пользователя |
| uid | uint64 | идентификатор пользователя, для которого вызывается метод; данный аргумент должен быть указан, если не указан session_key |
| secure | bool | флаг, обозначающий, что запрос идет по защищенной схеме «сервер-сервер»; возможные значения: 1 или 0; по-умолчанию 0 |
| format | string | формат выдачи ответа API; возможные значения: xml или json; по-умолчанию json |
Порядок следования параметров в запросе значения не имеет, порядок параметров важен только при расчете подписи.
Идентификатор приложения app_id уникален для каждого приложения или сайта и его можно узнать в разделе Мои разработки для приложений и Мои сайты для сайтов.
Флаг secure и подпись sig расчитываются в зависимости от схемы запроса (см. ниже).
Авторизация запроса
Параметры session_key и uid отвечают за авторизацию, то есть от лица какого пользователя происходит запрос. В зависимости от этого одна и та же функция в одном и том же приложении может возвращать немного разные результаты, например, когда один пользователь имеет доступ к каким-то закрытым данным, а другой нет. session_key используется для выполнения запросов по схеме «клиент-сервер» (см. ниже), а uid — по схеме «сервер-сервер».
Сессия (session_key) получается при каждом новом сеансе работы пользователя с вашим приложением или сайтом. При последующих заходах того же пользователя это значение будет другим, поэтому сохранять его не надо. Значение session_key вы получаете в зависимости от того, как вы используете REST API. Если вы используете API в клиенте социального приложения, session_key приходит вам в параметрах запроса (см. как разрабатывать социальные приложения), если вы интегрируете API для сайтов, сессия получается в процессе логина (см. как интегрировать сайты). В любом случае, после получения session_key, вы можете передать это значение на сервер чтобы осуществлять вызовы функций API с вашего сервера от лица текущего пользователя.
Значение uid вы можете сохранять в вашей базе зарегистрированных пользователей и использовать в тех случаях, когда пользователь не использует выше приложение, и, соответственно, сессия не доступна. Например, когда вы отправляете пользователям уведомления с помощью функции notifications.send rest .
Мы рекомендем вам всегда использовать session_key, когда это возможно, потому что в дальнейшем он может требоваться для некоторых возможностей API. Используйте uid только когда вы выполняете запросы пока пользователь не использует ваше приложение или сайт.
Подпись запроса
Чтобы удостовериться, что запрос отправлен действительно вами, а не злоумышленниками от лица вашего приложения, все запросы к REST API должны быть подписаны. Подпись может вычисляться по двум схемам: клиент-сервер и сервер-сервер. Результат расчета подписи вы должны передать в параметре sig, Платформа проверит подпись и выполнит запрос только если подпись правильная.
Клиент-сервер
Схема клиент-сервер предназначена для случаев, когда REST API используется из клиента социального приложения, клиентского кода сайта или отдельного мобильного или desktop-приложения.
Если вы хотите использовать схему клиент-сервер, то передайте в параметрах запроса secure=0 и расчитайте sig по следующему алгоритму:
sig = md5(uid + params + private_key)
Значение params — это конкатенация пар «имя=значение» отсортированных в алфавитом порядке по «имя», где «имя» — это название параметра, передаваемого в функцию API, «значение» — значение параметра. Разделитель в конкатенации не используется. Параметр sig при расчете подписи не учитывается, все остальные параметры запроса должны учитываться при расчете.
Значение uid — идентификатор текущего пользователя приложения. Значение private_key вы можете взять из настроек приложения.
Пусть uid=1324730981306483817 и private_key=7815696ecbf1c96e6894b779456d330e Запрос, который вы хотите выполнить: http://www.appsmail.ru/platform/api?method=friends.get&app_id=423004&session_key=be6ef89965d58e56dec21acb9b62bdaa Тогда: params = app_id=423004method=friends.getsession_key=be6ef89965d58e56dec21acb9b62bdaa sig = md5(1324730981306483817app_id=423004method=friends.getsession_key=be6ef89965d58e56dec21acb9b62bdaa7815696ecbf1c96e6894b779456d330e) = 5073f15c6d5b6ab2fde23ac43332b002 Итоговый запрос: http://www.appsmail.ru/platform/api?method=friends.get&app_id=423004&session_key=be6ef89965d58e56dec21acb9b62bdaa&sig=5073f15c6d5b6ab2fde23ac43332b002
Вот пример функции на PHP, которая возвращает значение подписи запроса по схеме клиент-сервер:
function sign_client_server(array $request_params, $uid, $private_key) < ksort($request_params); $params = ''; foreach ($request_params as $key =>$value) < $params .= "$key=$value"; >return md5($uid . $params . $private_key); >
Вы можете встраивать ключ private_key в клиенты приложений и в публично доступный код сайта. Таким образом, целеустремленные злоумышленники теоретически могут подделать запросы от вашего приложения, подписанные по схеме клиент-сервер. Из-за этого некоторые запросы можно выполнять только по схеме сервер-сервер.
Сервер-сервер
Схема сервер-сервер является более надежной. Используйте ее для критичных к безопасности запросов.
Некоторые запросы, которые подразумевают согласие пользователя, можно выполнить только по схеме клиент-сервер. В случае невозможности выполнения запроса по схеме сервер-сервер, вам вернется соответствующая ошибка.
Схема сервер-сервер использует отдельный ключ secret_key, который мы настоятельно рекомендуем вам хранить только на ваших серверах и использовать только при запросах с них к серверам Платформы.
Когда вы хотите использовать схему сервер-сервер, вы должны передать в параметрах запроса параметр secure=1 и расчитать значение параметра sig следующим образом:
sig = md5(params + secret_key)
Пусть uid=1324730981306483817 и secret_key=3dad9cbf9baaa0360c0f2ba372d25716 Запрос, который вы хотите выполнить: http://www.appsmail.ru/platform/api?method=friends.get&app_id=423004&session_key=be6ef89965d58e56dec21acb9b62bdaa&secure=1 Тогда: params = app_id=423004method=friends.getsecure=1session_key=be6ef89965d58e56dec21acb9b62bdaa sig = md5(app_id=423004method=friends.getsecure=1session_key=be6ef89965d58e56dec21acb9b62bdaa3dad9cbf9baaa0360c0f2ba372d25716) = 4a05af66f80da18b308fa7e536912bae Итоговый запрос: http://www.appsmail.ru/platform/api?method=friends.get&app_id=423004&session_key=be6ef89965d58e56dec21acb9b62bdaa&secure=1&sig=4a05af66f80da18b308fa7e536912bae
Вот пример функции на PHP, которая возвращает значение подписи запроса по схеме сервер-сервер:
function sign_server_server(array $request_params, $secret_key) < ksort($request_params); $params = ''; foreach ($request_params as $key =>$value) < $params .= "$key=$value"; >return md5($params . $secret_key); >
Безопасность схемы сервер-сервер основывается на том, что secret_key знаете только вы и Платформа. Поэтому никогда не раскрывайте его третьим лицам. Если у вас возникли сомнения в безопасности secret_key, перегенерите его в настройках приложения.
Привилегии
Установка приложения (первая авторизация) дает приложению возможность получать информацию о пользователе, его друзьях, фотографиях, музыке. То есть пользоваться функциями users.getInfo rest , friends.get rest , photos.get rest , audios.get rest и подобными. Также приложение может отсылать пользователю уведомления с помощью функции notifications.send rest . Установка в большом и мобильном мире производится автоматически Платформой. Для установки standalone-приложений необходимо использовать OAuth-авторизацию для standalone-приложений. Для установки (коннекта) внешнего сайта надо пользоваться либо OAuth-авторизацией для сайтов, либо функцией connect.login js .
Для standalone-приложений и сайтов запросить привилегии можно либо через параметр scope OAuth-авторизации, либо в параметрах функции connect.login js .
Привилегии распространяются только на функции REST API. Функции JS API не зависят от привилегий и при попытке записи в Мой Мир всегда показывают пользователю диалог с запросом подтверждения действия. Вы можете выбирать просить ли у пользователя привилегии и использовать REST API или использовать диалоги из JS API.
Не все привилегии доступны во всех контекстах:
| Название привилегии | Смысл | Функции | Мой Мир | Мобильный Мир | Standalone-приложения | Сайты |
|---|---|---|---|---|---|---|
| photos | приложение может загружать фотографии | photos.upload rest , photos.createAlbum rest | нет | нет | есть | есть |
| guestbook | приложение может добавлять записи в гостевые книги пользователей | guestbook.post rest | нет | нет | есть | есть |
| stream | приложение может добавлять записи в ленту «Что нового» пользователя | stream.post rest | нет | нет | есть | есть |
| messages | приложение имеет доступ к личным сообщениям пользователя | messages.getThread rest , messages.getThreadsList rest , messages.post rest , messages.getUnreadCount rest | нет | нет | есть | есть |
| events | приложение имеет доступ к событиям пользователя в Моем Мире | events.getUnreadCount rest | нет | нет | есть | есть |
Функции REST API
- events.getNewCount
- friends.get
- friends.getAppUsers
- friends.getInvitationsCount
- friends.getOnline
- guestbook.post
- jsapi.popup
- mail.getUnreadCount
- messages.getThread
- messages.getThreadsList
- messages.getUnreadCount
- messages.post
- mobile.getCanvas
- multipost.send
- multipost.send-commercial
- notifications.send
- notify.bulk
- payments.openDialog
- photos.createAlbum
- photos.get
- photos.getAlbums
- photos.upload
- stream.comment
- stream.get
- stream.getByAuthor
- stream.like
- stream.post
- stream.share
- stream.unlike
- titles.del
- titles.list
- titles.update
- titles.user_drop
- users.getBalance
- users.getInfo
- users.hasAppPermission
- users.isAppUser
- widget.set
Другие технологии
- JS API
- Flash-библиотека
- сторонние библиотеки
Краткое справочное руководство
Краткое справочное руководство выполняет иную функцию, нежели руководства по началу работы. Хотя руководство по началу работы помогает новичкам ориентироваться, предоставляя сквозную инструкцию для выполнения простого запроса API, краткое справочное руководство помогает пользователям получить представление о системе в целом, часто путем предоставления списка конечных точек API.
Необходимость в кратких справочных руководства
Будь то документация для конечного пользователя или документация для разработчика, в кратком справочном руководстве содержится 1-2-страничное руководство, где кратко описаны основные задачи и функции системы.

Краткое справочное руководство должно предоставить пользователю достаточно информации, чтобы понять суть системы, включая ключевые конечные точки и задачи. Часто конечные точки API имеют связь друг с другом, которые можно изобразить визуально. Вот пример диаграммы API, которую автор курса создал для одной из компаний:

Текст в диаграмме приведен на латинице по соображениям конфиденциальности, поэтому логика может быть не совсем очевидной. Но в этом API конечные точки организованы в разные группы. Некоторые из групп имели несколько уровней в конечной точке, и несколько опций включения для каждой конечной точки. Диаграмма была создана в Adobe Illustrator и опубликована в формате PDF. Разработчики сочли такой формат полезным, потому что был охвачен API в целом, показав, как все конечные точки соединены друг с другом в логической гармонии. Для документации API обычное дело, что в кратком справочном руководстве перечислены сокращенные описания конечных точек. По этой причине вывод Swagger UI часто может служить кратким справочным руководством.
Вне документации API краткие справочные руководства, как правило, больше ориентированы на задачи. Для сервиса установки или настройки, может имеет смысл делать руководство более описательным, меньше используя визуальный формат. Вот пример макета для такого руководства:

В случае документации API, как правило, краткое справочное руководство фокусируется на визуальной группировке или отображении конечных точек, поскольку именно это составляет основную функциональность API.
Преимущества чистой информации для изучения
Поскольку краткий справочник по сути представляет собой краткую сводку или описание всей системы, то информация собирается не только из одного источника. В результате, часто кажется, что у еще одного готового к работе технического писателя нет времени писать. Но для лучшего взаимодействия с пользователем не следует пропускать краткое справочное руководство, поскольку оно предоставляет неисчислимую ценность пользователям.
При создании краткого справочного руководства нужно стараться сжимать наиболее важную информацию в одну или две страницы, которые пользователи могут распечатать и закрепить на своей стене. Под “сжимать” не подразумевается сокращение шрифта до 6 пунктов, уменьшение начального значения и устранение всех пробелов. С помощью краткого справочного руководства нужно брать что-то надежное и сложное и минимизировать его до сути, но так, чтобы оно оставалось ясным для пользователей.
Благодаря такой “чистке” быстрые справочные руководства предоставляют пользователям уникальное преимущество в понимании материала. Предоставление общего обзора системы помогает пользователям получить представление целого, до углубления в детали.
Tip: Подробное описание важности очищения информации для пользователей см. в статье «Упрощение сложности»: сокращение, расслоение и перегонка как стратегия простоты. Чтение обзоров, сводок и другой высокоуровневой информации для быстрого обзора может помочь пользователям понять сложную систему различными способами. Слишком часто пользователи сталкиваются с техническими деталями без какой-либо подготовки и ориентации в целом.
Распределение больших объемов информации в кратко сформулированные заголовки, резюме, заголовки, мини-оглавления и тематические предложения может облегчить потребление и понимание информации. Краткие справочные руководства поднимают принцип очищения на другой уровень, сжимая всю систему в минимальный объем информации.
Краткие справочные руководства похожи на поэзию технического письма. Цель не просто быть кратким или консистентным. С поэзией поэт пытается вызвать настроение или нарисовать момент, и в этот короткий момент захватить сущность целого. Написание краткого справочного руководства требует практически таких же усилий. Дело не в простом сокращении слов, чтобы сделать документацию короче, или ограничении вывода несколькими темами, а в попытках сжать документацию в целом и выразить ее минималистский эквивалент.
Задача, вероятно, невозможна для технического материала. Тем не менее, попытка того стоит, и философия остается прежней. Краткие справочные руководства научат нас пользоваться системой за 5 минут, а не за 5 часов. Это философия упрощения и языковой эффективности.
Не стоит обманываться краткостью и масштабом краткого справочного руководства. При разработке такого руководства можно потратить несколько дней на написание только одной страницы. Но когда финал может быть отлит золотом!
Примеры краткого руководства
Ниже приведены примеры кратких справочных руководств на различных сайтах документации по API.
Eventful

Eventful предоставляет быстрый список всех конечных точек в API на одной странице, упорядоченный по группам ресурсов. Каждая конечная точка описана примерно в половину строки, поэтому можно быстро понять их все. Например, описание для /events/get в их кратком справочнике: «Получить запись о событии». Но если щелкнуть для получения более подробной информации, более подробное определение будет «При наличии идентификатора события возвращает данные о событии, связанные с этим событием». , См. http://eventful.com/events/E0-001-000278174-6 для примера интерфейса».
С первого взгляда на конечные точки можно получить определенное понимание. Взглянув с высоты на лес, можно увидеть форму леса в целом. Можно не знать, какие деревья содержит лес, но можно понять другие детали, которые не видны, когда видишь одно дерево.
Parse

Краткий справочник Parse похож на Eventful в том, что это длинный список конечных точек, на этот раз сгруппированный в таблицы. Эта справочная страница является просто разделом в одной длинной single page странице документации. При их подходе вся документация находится на одной странице, но при прокрутке вниз выделяются разные записи на боковой панели.
Иногда разработчикам нравится одностраничный подход, потому что он уменьшает фрагментацию информации и позволяет им использовать Ctrl + F, чтобы найти все экземпляры ключевого слова. Исследования компромиссов такого одностраничного подхода описаны в Single-page docs versus “Click Insanity”.
При использовании справочной документации OpenAPI на GitHub, заметно, что документация также содержится на одной странице. Разработчики могут использовать Ctrl + F , для быстрого поиска. Тем не менее такая документация обеспечивает много визуальной сложности для понимания пользователям.
Shopify

Краткое руководство Shopify не про API, но оно показывает фильтры, переменные и другие функции, доступные в Liquid, который является языком сценариев для разработчиков. Здесь Shopify использует функциональность свертывания и расширения для сжатия информации.
Такое краткое справочное руководство удобно тем, что позволяет одновременно просматривать все доступные функции в Liquid, чтобы знать, что нужно для получения дополнительной информации. Это как карта местности Liquid. Карта позволяет узнать все существующие функции.
Практическое занятие: краткое справочное руководство
В своем найденном опен-сорс проекте найдем краткое справочное руководство. Ответим на следующие вопросы:
- Существует ли краткое справочное руководство по API? Возможно, список конечных точек API?
- Есть ли вывод Swagger UI, который служит кратким справочником по API?
- Если нет краткого справочного руководства, выиграет ли API от этого? Почему да или почему нет?
- Помимо списка сокращенных описаний конечных точек, что еще можно добавить в краткое справочное руководство API? Общие задачи?
- Есть ли несколько важных задач, которые пользователи должны выполнять с помощью API? Обсуждаются ли эти основные задачи в руководстве по началу работы?
Что такое интерфейс прикладного программирования (API)?

API – это механизмы, которые позволяют двум программным компонентам взаимодействовать друг с другом, используя набор определений и протоколов. Например, система ПО метеослужбы содержит ежедневные данные о погоде. Приложение погоды на телефоне «общается» с этой системой через API и показывает ежедневные обновления погоды на телефоне.
Что значит API?
API – Application Programming Interface, что значит программный интерфейс приложения. В контексте API слово «приложение» относится к любому ПО с определенной функцией. Интерфейс можно рассматривать как сервисный контракт между двумя приложениями. Этот контракт определяет, как они взаимодействуют друг с другом, используя запросы и ответы. Документация API содержит информацию о том, как разработчики должны структурировать эти запросы и ответы.
Как работают API?
Архитектура API обычно объясняется с точки зрения клиента и сервера. Приложение, отправляющее запрос, называется клиентом, а приложение, отправляющее ответ, называется сервером. Итак, в примере с погодой база данных службы – это сервер, а мобильное приложение – это клиент.
Существует четыре различных способа работы API в зависимости от того, когда и почему они были созданы.
SOAP API
SOAP – Simple Object Access Protocol, т. е. простой протокол доступа к объектам. Клиент и сервер обмениваются сообщениями посредством XML. Это менее гибкий API, который был более популярен в прошлом.
RPC API
Такие API называются системой удаленного вызова процедур. Клиент выполняет функцию (или процедуру) на сервере, и сервер отправляет результат обратно клиенту.
Websocket API
Websocket API – это еще одна современная разработка web API, которая использует объекты JSON для передачи данных. WebSocket API поддерживает двустороннюю связь между клиентскими приложениями и сервером. Сервер может отправлять сообщения обратного вызова подключенным клиентам, что делает его более эффективным, чем REST API.
REST API
На сегодняшний день это самые популярные и гибкие API-интерфейсы в Интернете. Клиент отправляет запросы на сервер в виде данных. Сервер использует этот клиентский ввод для запуска внутренних функций и возвращает выходные данные обратно клиенту. Давайте рассмотрим API REST более подробно ниже.
Что такое REST API?
REST – это Representational State Transfer, т. е. передача репрезентативного состояния. REST определяет набор функций, таких как GET, PUT, DELETE и т. д., которые клиенты могут использовать для доступа к данным сервера. Клиенты и серверы обмениваются данными по протоколу HTTP.
Главной особенностью REST API является то, что такая передача выполняется без сохранения состояния. Без сохранения состояния означает, что серверы не сохраняют клиентские данные между запросами. Клиентские запросы к серверу аналогичны URL-адресам, которые вы вводите в браузере для посещения веб-сайта. Ответ от сервера представляет собой простые данные без типичного графического отображения веб-страницы.
Что такое web API?
Web API или Web Service API –это интерфейс обработки приложений между веб-сервером и веб-браузером. Все веб-сервисы являются API, но не все API являются веб-сервисами. REST API – это особый тип Web API, в котором используется стандартный архитектурный стиль, описанный выше.
Различные термины, которые относятся к API, такие как Java API или сервисные API, существуют потому, что исторически API были созданы до всемирной паутины. Современные web API – это REST API, и эти термины могут использоваться взаимозаменяемо.
Что такое интеграции API?
Интеграции API – это программные компоненты, которые автоматически обновляют данные между клиентами и серверами. Некоторыми примерами интеграции API являются автоматическая синхронизация данных в облаке из галереи изображений телефона или автоматическая синхронизация времени и даты ноутбуке при смене часового пояса. Организации также могут использовать их для эффективной автоматизации многих системных функций.
.67a41a2ef9823282fe672434ddd56dd22c13d5a5.png)
Каковы преимущества REST API?
REST API имеет четыре главных преимущества.
1. Интеграция
API используются для интеграции новых приложений с существующими программными системами. Это увеличивает скорость разработки, потому что каждую функцию не нужно писать с нуля. API можно использовать для усиления существующего кода.
2. Инновации
Целые отрасли могут измениться с появлением нового приложения. Компании должны быстро реагировать и поддерживать быстрое развертывание инновационных услуг. Они могут сделать это, внося изменения на уровне API без необходимости переписывать весь код.
3. Расширение
API-интерфейсы предоставляют компаниям уникальную возможность удовлетворять потребности своих клиентов на разных платформах. Например, карты API позволяет интегрировать информацию о картах через веб-сайты, Android, iOS и т. д. Любая компания может предоставить аналогичный доступ к своим внутренним базам данных, используя бесплатные или платные API.
4. Простота обслуживания
API действует как шлюз между двумя системами. Каждая система обязана вносить внутренние изменения, чтобы это не повлияло на API. Таким образом, любые будущие изменения кода одной стороной не повлияют на другую сторону.
Какие типы API существую?
API классифицируются как по архитектуре, так и по сфере применения. Мы уже рассмотрели основные типы архитектур API, поэтому мы предлагаем рассмотреть сферы применения.
Частные API
Это внутренние API организаций, которые используются только для соединения систем и данных внутри бизнеса.
Общедоступные API
Это API с общим доступом и могут быть использованы кем угодно. С этими типами API может быть (но не обязательно) сопряжена некоторая авторизация и стоимость.
Партнерские API
Эти API доступны только авторизованным сторонним разработчикам для содействия партнерским отношениям между предприятиями.
Составные API
Эти API объединяют два или более разных API для решения сложных системных требований или поведения.
Что такое адрес API и почему он важен?
Адреса API – это конечные точки взаимодействия в системе связи API. К ним относятся URL-адреса серверов, службы и другие конкретные цифровые местоположения, откуда информация отправляется и принимается между системами. Адреса API имеют решающее значение для предприятий по двум основным причинам.
1. Безопасность
Адреса API делают систему уязвимой для атак. Мониторинг API имеет решающее значение для предотвращения ненадлежащего использования.
2. Производительность
Адреса API, особенно с высоким трафиком, могут создавать узкие места и влиять на производительность системы.
Как обезопасить REST API?
Все API должны быть защищены посредством надлежащей аутентификации и мониторинга. Описание двух основных способов защиты безопасности REST API см. ниже.
1. Токены аутентификации
Они используются для авторизации пользователей для выполнения вызова API. Токены аутентификации проверяют, являются ли пользователи теми, за кого они себя выдают, и что у них есть права доступа для этого конкретного вызова API. Например, при входе на почтовый сервер почтовый клиент использует токены аутентификации для безопасного доступа.
2. Ключи API
Ключи API проверяют программу или приложение, выполняющее вызов API. Они идентифицируют приложение и гарантируют, что оно имеет права доступа, необходимые для выполнения конкретного вызова API. Ключи API не так безопасны, как токены, но они позволяют осуществлять мониторинг API для сбора данных об использовании. Возможно, вы заметили длинную строку символов и цифр в URL-адресе вашего браузера при посещении разных веб-сайтов. Эта строка представляет собой ключ API, который веб-сайт использует для выполнения внутренних вызовов API.
Как создать API?
Для создания API, с которым другие разработчики захотят работать и которому будут доверять, необходимы должные осмотрительность и усилия. См. пять шагов, необходимых для качественного проектирования API, ниже.
1. План API
Спецификации API, такие как OpenAPI, обеспечивают основу для разработки API. Лучше заранее подумать о различных вариантах использования и убедиться, что API соответствует текущим стандартам разработки API.
2. Разработка API
Разработчики API создают прототипы API, используя шаблонный код. После тестирования прототипа разработчики могут настроить его в соответствии с внутренними спецификациями.
3. Тестирование API
Тестирование API аналогично тестированию ПО и должно проводиться для предотвращения ошибок и дефектов. Инструменты тестирования API можно использовать для проверки устойчивости API к кибератакам.
4. Документирование API
Хотя API говорят сами за себя, документация по API действует как руководство по повышению удобства использования. Хорошо задокументированные API, которые предлагают ряд функций и вариантов использования, как правило, более популярны в сервис-ориентированной архитектуре.
5. Вывод API на рынок
Так же, как Amazon – это онлайн-рынок для розничной торговли, существуют торговые площадки API для разработчиков, чтобы покупать и продавать другие API. Размещение API может позволить монетизировать интерфейс.
Что такое тестирование API?
Стратегии тестирования API аналогичны другим методологиям тестирования ПО. Основное внимание уделяется проверке ответов сервера. Тестирование API включает описанные ниже аспекты.
- Выполнение нескольких запросов к адресам API для тестирования производительности.
- Написание модульных тестов для проверки бизнес-логики и функциональной корректности.
- Тестирование безопасности путем имитации системных атак.
Как написать документацию по API?
Составление исчерпывающей документации по API является частью процесса управления API. Документация по API может быть создана автоматически с помощью инструментов или написана вручную. См. рекомендации ниже.
- Написание объяснений на простом, легко читаемом русском языке. Документы, созданные инструментами, могут стать многословными и потребовать редактирования.
- Использование примеров кода для объяснения функциональности.
- Ведение документации, чтобы она была точной и актуальной.
- Ориентированность стиля письма на начинающих
- Охват всех проблем, которые API может решить для пользователей.
Как использовать API?
Шаги по внедрению нового API см. ниже.
- Получение ключа API Выполняется путем создания проверенной учетной записи у поставщика API.
- Установка клиента API HTTP Этот инструмент позволяет легко структурировать запросы API, используя полученные ключи API.
- В отсутствие клиента API можно попробовать самостоятельно структурировать запрос в браузере, обратившись к документации по API.
- Как только вы освоитесь с новым синтаксисом API, вы сможете начать использовать его в коде.
Где найти новые API?
Новые веб-API можно найти на торговых площадках API и в каталогах API. Торговые площадки API – это открытые платформы, на которых любой желающий может выставить API на продажу. Каталоги API – это контролируемые репозитории, регулируемые владельцем каталога. Опытные разработчики API могут оценить и протестировать новый API, прежде чем добавить его в свой каталог.
Популярные веб-сайты API см. ниже.
- Rapid API – крупнейший мировой рынок API с более чем 10 000 общедоступных API и 1 млн активных разработчиков на веб-сайте. RapidAPI позволяет пользователям тестировать API непосредственно на платформе перед совершением покупки.
- Public API – платформа группирует удаленные API в 40 нишевых категорий, что упрощает просмотр и поиск подходящего для ваших нужд объекта.
- APIForThat и APIList – на обоих веб-сайтах есть списки из более чем 500 web-API, а также подробная информация о том, как их использовать.
Что такое шлюз API?
Шлюз API – это инструмент управления API для корпоративных клиентов, использующих широкий спектр серверных служб. Шлюзы API обычно выполняют общие задачи, такие как аутентификация пользователей, статистика и управление скоростью, применимые ко всем вызовам API.
Amazon API Gateway – это полностью управляемый сервис для разработчиков, предназначенный для создания, публикации, обслуживания, мониторинга и обеспечения безопасности API в любых масштабах. API Gateway берет на себя все задачи, связанные с приемом и обработкой тысячи одновременных вызовов API, включая управление трафиком, поддержку CORS, авторизацию и контроль доступа, регулирование количества запросов, мониторинг и управление версиями API.
Что такое GraphQL?
GraphQL – это язык запросов, разработанный специально для API. Он отдает приоритет предоставлению клиентам именно тех данных, которые они запрашивают, и не более того. Такой язык разработан, чтобы сделать API быстрыми, гибкими и удобными для разработчиков. В качестве альтернативы REST GraphQL дает разработчикам интерфейсов возможность запрашивать несколько баз данных, микросервисов и API с помощью одной конечной точки GraphQL. Организации предпочитают создавать API с помощью GraphQL, потому что это помогает им быстрее разрабатывать приложения. Подробнее о GraphQL читайте здесь.
AWS AppSync – это полностью управляемый сервис, который упрощает разработку API-интерфейсов GraphQL, выполняя тяжелую работу по безопасному подключению к источникам данных, таким как AWS DynamoDB, AWS Lambda и т. д. AWS AppSync может передавать обновления данных в режиме реального времени через Websocket миллионам клиентов. Для мобильных и веб-приложений AppSync также обеспечивает локальный доступ к данным, когда устройства отключаются. После развертывания AWS AppSync автоматически масштабирует подсистему выполнения API GraphQL вверх или вниз в соответствии с текущим объемом запросов к API.
Как получить сервисы Amazon API?
Управление интерфейсом прикладного программирования является важной частью современной разработки программного обеспечения. Стоит инвестировать в инфраструктуру API, включая инструменты, шлюз и архитектуру микросервисов как для внутренних, так и для внешних пользователей.
Amazon API Gateway предусматривает полный набор функций для управления несколькими API одновременно с должной эффективностью. Вы можете бесплатно совершать до одного миллиона вызовов API, зарегистрировавшись на портале AWS.
AWS AppSync предоставляет возможность настраивать, администрировать и обслуживать полностью управляемую систему API GraphQL со встроенной бессерверной инфраструктурой высокого уровня доступности. Вы платите только за то, что реально используете. Минимальная плата или обязательный уровень использования отсутствует. Чтобы начать работу, войдите в консоль AWS AppSync.