Историческая справка
основной API для программирования графики, начиная с ранних дней Windows, был интерфейсом графического устройства (GDI). этот API предназначен для работы с множеством двумерных устройств вывода, а также для формирования Windows пользовательского интерфейса. DirectDraw и Direct3D были представлены в качестве альтернативных API-интерфейсов для поддержки полноэкранных игр и трехмерной отрисовки как расширений существующего оборудования. Взаимодействие с GDI было сложным. Эффективное сочетание традиционных элементов GDI с элементами Direct3D было ограничено этой структурой. версия WDM в Windows XP, известная как XPDM, отражает параллельную природу GDI и Direct3D (см. рис. 1).
Рис. 1. графические api в Windows XP
В течение многих лет возможности трехмерных видеоадаптеров значительно увеличились до того места, где эта функция выделяется подавляющим большинством аппаратных средств. новая модель драйверов, Windows дисплейной модели (WDDM), переводит GPU и Direct3D в forefront, позволяя создавать совершенно новые возможности, трехмерные настольные системы, которые легко смешиваются с возможностями современных программируемых графических процессоров. При использовании WDDM видеооборудование полностью зависит от Direct3D, а все остальные графические интерфейсы взаимодействуют с видеооборудованием с помощью новой модели драйверов, ориентированной на Direct3D (см. рис. 2).
Рис. 2. графические api в Windows Vista
дополнительные сведения о WDDM см. в статье руководство по проектированию модели видеодрайверов (wddm) Windows Vista на сайте MSDN.
Зачем нужен API?
Теперь нам знакомы принципы работы API и задачи, которые они помогают решить. Но они хороши не только этим. Программные интерфейсы используются еще по двум немаловажным причинам.
Во-первых, такой подход позволяет делать программы надежнее. Инкапсуляция в целом заметно упрощает жизнь разработчиков. Отдельные компоненты приложений становятся абстракциями. Создателям нового ПО не приходится лезть в логику низкоуровневых функций и разбираться в их реализации. Так заметно повышается безопасность выполняемых задач, что особенно заметно на уровне таких масштабных программных продуктов, как операционные системы. Программы постоянно выполняют сотни внутренних задач, при этом они проходят незаметно для пользователя и не могут навредить друг другу.
Во-вторых, на API можно заработать. Например, сервисы, предоставляющие информацию с метеовышек, берут плату за каждый запрос актуальной погоды, если их API используется в сторонних приложениях. Аналогичные условия могут предлагать и другие компании, предоставляющие услуги. Будь то навигация, конвертация файлов в другие форматы и прочие возможности, реализуемые через API.
Почему разработчики используют API?
Есть как минимум еще 4 причины, объясняющие интерес программистов к API:
- API упрощает и ускоряет создание новых продуктов. Разработчикам не приходится каждый раз изобретать велосипед. Можно взять API нейронной сети TenserFlow, к примеру, и внедрить в свое программное обеспечение, а не создавать собственную систему машинного обучения.
- Как я уже отметил выше, программный интерфейс увеличивает безопасность разработки. С помощью него можно вынести ряд функций в отдельное приложение, сделав невозможным их некорректное использование. От человеческого фактора это тоже спасает.
- API упрощает настройку связей между разными сервисами и программами. Интерфейс нивелирует необходимость в тесном сотрудничестве создателей различных приложений. Разработчики могут внедрять поддержку сторонних сервисов, вообще не контактируя с их создателями.
- Наличие готовых интерфейсов позволяет сэкономить не только время и силы программистов, но и финансы, с которыми часто связано создание новых программных решений.
Direct3D 10,1
Windows Пакет обновления 1 (SP1) для Vista расширяет API Direct3D 10 с помощью Direct3D 10,1, который добавляет дополнительные интерфейсы и дополнительную модель шейдера для поддержки новых аппаратных функций видеоадаптеров, поддерживающих Direct3D 10,1. Все оборудование, способное поддерживать Direct3D 10,1, также полностью поддерживает все функции Direct3D 10, а разработчики игр могут использовать дополнительные функции Direct3D 10,1, если они доступны.
Примечание
Direct3D 10,1 — это графический API, используемый Windows 7 desktop.
Примечание
Windows 7 и обновление Windows Vista (KB 971644) добавляют поддержку для DXGI 1,1, уровни функций 10level9 и устройство WARP10 к существующему API-интерфейсу Direct3D 10,1.
Вопрос №2
Теперь прочитай историю:
«Парень и девушка полюбили друг друга, но их чувствам мешают внешние силы, ведь влюблённые — из двух очень разных, враждебных миров. Из-за этой вражды их отношения невозможны, но история всё равно заканчивается торжеством любви — пусть и за порогом жизни и смерти».
Это классический сюжет, который в разные эпохи переосмысляли по-разному. Перед тобой четыре фрагмента фильмов. Три сняты по этой истории, а один — нет, он лишний. Найди лишний фрагмент.
Ответ: 4.
Вопрос №3
Теперь посмотри фрагмент из фильма. Мы специально оборвали сцену на кадре со взглядом персонажа. Внимательно изучи его реакцию и попробуй угадать, что или кого он увидел.
Варианты ответов:
- Хорошего друга
- Возлюбленную
- Страшное чудовище
- Океан
Ответ: Старшное чудовище.
Библиотека компонентов
Мы пересмотрели всю структуру библиотеки, думая сразу над тем, как будем отдавать ресурсы разработке. Получилось разделить все на три файла:
- Core хранит цвета, стили текста и интерфейсные иконки. Этот файл используется только дизайнерами. Здесь могут храниться как финальные решения, так и драфты иконок или цветов.
- Atoms содержит компоненты (кнопки, списки и тд), которые мы постоянно используем в создании интерфейса;
- Dev Core хранит финальные ресурсы для разработки и спецификации компонентов. Сюда мы складываем ресурсы для экспорта разработчикам. Как раз про него далее и пойдет речь.
Примеры API
Работа API представляет собой передачу данных по определенному запросу со стороны клиента или другого приложения. Допустим, нужно выудить информацию с существующего сайта и передать ее в программу.
В браузере будет дан запрос и ожидаться ответ в виде HTML-страницы. Если же используется API в стороннем приложении, то ему может быть достаточно фрагмента данных в формате JSON. Более точное техническое описание работы любого из существующих API доступно только их создателям.
На стороне пользователя такая реализация интерфейса будет выглядеть как банальная возможность выполнить действие, связанное с программой А в программе Б. То есть убрать лишний переход в стороннюю программу.
Ниже разберем частные случаи использования API с перспективы пользователей, а не разработчиков.
Google Календарь
Те, кто использовал приложения-календари для iOS или Android, знают, что данные в них можно синхронизировать, подключив один из популярных сервисов: Apple iCal или Google Calendar. Обе компании предлагают разработчикам API, позволяющие подключить свой календарь напрямую к сторонним приложениям. Благодаря подобной интеграции люди могут использовать несколько разных программ со схожей функциональностью и иметь на руках актуальную информацию о всех своих делах.
API позволяют создавать новые события и напоминания, удалять уже существующие, редактировать их и т.п.
Погодное приложение
Существующие погодные приложения (встроенные в операционную систему или сторонние из App Store или Google Play) получают информацию о погоде из сторонних источников.
Есть сервисы, взаимодействующие напрямую с метеостанциями и обладающие информацией о текущей погоде. Разработчики приложений для мобильных устройств эту информацию покупают.
А чтобы весь процесс упростить, сервисы, сотрудничающие с метеостанциями, разработали соотвествующие API. В них содержится набор функций, помогающий делать запросы о погоде в конкретных местах. Эти запросы через посредника (приложение) отправляются на «метеостанцию», а их результат возвращается пользователю тем же путем.
Сервис по заказу авиабилетов
Здесь аналогичная ситуация. Помимо сайтов и приложений, принадлежащих авиакомпаниям, есть так называемые агрегаторы. У нас популярен Aviasales, но есть и другие.
Такие сервисы собирают информацию о стоимости авиабилетов в разных авиакомпаниях и отображают ее в едином окне. Чтобы добыть эту информацию, разработчики используют функции сервисов авиакомпаний, которые помогают в реальном времени обновлять информацию о направлениях и стоимости билетов.
Кнопки авторизации
Наверняка вы видели на различных сайтах кнопки, позволяющие зарегистрироваться с помощью уже существующих аккаунтов на популярных площадках. Сейчас такие есть у Google, Facebook, Apple, Twitter, ВКонтакте и т.д. Набор доступных опций на конкретном ресурсе полностью зависит от его хозяев. Это тоже делается через API. Условная Apple создала набор защищенных функций, который можно с минимальными затратами подключить к своему проекту и предоставить пользователям доступ к удобному и безопасному способу авторизации.
При этом жизнь пользователей становится проще, а у владельцев ресурса остается доступ к почтовым адресам и другим персональным данным для взаимодействия с вновь зарегистрировавшимся человеком.
Навигация на сайтах и в приложениях
Тут почти как с погодой. Есть несколько крупных корпораций, предлагающих картографические данные. Те же Apple, Google, Yandex и парочка других. Некоторые из этих компаний разработали API, позволяющие подключить собственный картографический сервис к другим площадкам. Иногда они используются во внутренних продуктах. Яндекс.Транспорт построен на базе Яндекс.Карт, к примеру. Иногда API используются крупными партнерами. Uber использует для навигации сервис компании Google.
То же самое делают разработчики многих приложений под Android. Так как это API, встроенный в операционную систему, подключить карты Google к своему сервису доставки еды или приложению для бегунов проще всего. На iOS ситуация иная – там проще работать с Apple Maps.
Но у API навигационных сервисов есть и более скромное применение. Например, интерактивные мини-карты в футерах местечковых заведений, на которых указана схема проезда с возможностью быстро построить маршрут.
Проблема документирования API
Документация API — это техническая (программная) документация, в которой указано как использовать API.
При этом эту документацию нужно поддерживать в актуальном стоянии чаще, чем любую другую. Ведь от актуальности документации API зависит качество разработки продукта. Однако, есть еще проблема разработки самого API системы. Любая система развивается, добавляются функции, изменяются существующие вызовы и методы. Но необходимо помнить о том, что с нашей системой могут быть интегрированы другие системы. И если изменения затронут API, то такая интеграция «развалится», при следующем обновлении произойдёт нарушение механизмов взаимодействия. Поэтому в документировании API можно выделить две основные проблемы:
- Сложность написания документации API, так как это очень трудная тема. Неясно как писать, что писать и прочее. При написании возникает очень много вопросов. Тем более, если человек до этого никогда не имел дело с документированием API.
- Поддержка документации API в актуальном состоянии.
Проблема стандартизации API
В первую очередь с документацией API будут работать люди. В связи с этим, для общего понимания нужен некий стандарт разработки API, чтобы разработчики даже при беглом ознакомлении понимали, как с ним корректно взаимодействовать. Также наличие стандарта API позволяет использовать средства автоматической кодогенерации, что существенно повышает скорость разработки, но об этом я расскажу позже.
Подобного рода внутренний стандарт лучше разработать и утвердить с отделом разработки программного обеспечения.
Для примера документация API должна включать:
- Пример полного запроса.
- Примеры ожидаемого ответа.
- Список кодов ошибок.
- Удобный для поиска Web–интерфейс.
- Предупреждения об изменении версии и расписание устаревания.
Способы создания документации API
Создать текстовый документ.
Это, конечно, самый простой вариант, в котором можно сделать максимально подборные описания, но такой документ сложно поддерживать в актуальном состоянии, на его создание уйдёт куча времени, да и использовать его в других сферах (например, тестирование) нельзя.
Создать документацию с помощью специализированных программ (спецификаций).
Их нельзя сделать такими подробными, как тестовый документ, но зато можно настроить автогенерацию (изменение кода приложения документации автоматически с учётом изменений), которая позволит быть документации API всегда в актуальном состоянии, что очень важно. Поэтому сейчас большинство компаний выбирает именно этот способ
Повторюсь, ведь от актуальности документации API зависит качество разработки ПО.
Одни из самых популярных спецификаций — это RAML, Swagger и API Blueprint.
Например, если программирование Системы происходи в MS Visual Studio, то в ней автоматически генерируется Xml (представлена на картинке ниже), с помощью которой уже можно создать в любой другой спецификации документацию API.
В данной статье разберём спецификацию Swagger, так как, на мой взгляд, она является более удобной для работы.
Когда понимание документирование API будет «на уровне», то можно уже выбрать любую другую программу, которая нравится больше, а для начала можно начать и с Swagger.
Инструменты для взаимодействия с Microsoft Graph
Песочница Graph
Песочница Graph — это веб-инструмент, который можно использовать для создания и тестирования запросов с помощью API Microsoft Graph. Песочница Graph доступна по адресу: https://developer.microsoft.com/graph/graph-explorer.
Вы можете получить доступ к демонстрационным данным без входа или войти в свой клиент. Чтобы отправить запрос, выполните следующее:
- Выберите метод HTTP.
- Выберите версию API, которую нужно использовать.
- Введите запрос в текстовое поле запроса.
- Нажмите Запуск запроса.
В следующем примере показан запрос, возвращающий сведения о пользователях в демонстрационном клиенте:
Примеры запросов представлены в песочнице Graph, чтобы вы могли быстрее запускать распространенные запросы. Чтобы просмотреть доступные примеры, выберите Показать другие примеры. Выберите Вкл для набора примеров, который вы хотите просмотреть, и после закрытия окна выбора должен появиться список готовых запросов.
После отправки запроса отображается код состояния и сообщение, а запрос выводится на вкладке Просмотр отклика.
Postman
Postman — это инструмент, который можно использовать для создания и тестирования запросов с помощью API Microsoft Graph. Вы можете скачать Postman по адресу: https://www.getpostman.com/. Чтобы взаимодействовать с Microsoft Graph в Postman, используйте коллекцию Microsoft Graph.
Дополнительные сведения см. в статье Использование Postman с API Microsoft Graph.
Как научиться уделать больше внимания деталям?
Если вы не обладаете какими-либо из описанных характеристик или навыков, не волнуйтесь. Вы можете развить свои навыки детализации.
Несколько советов:
- Создавайте план для каждой задачи
- Всегда делайте подробные заметки
- Избегайте многозадачности
- Придерживайтесь порядка на рабочем столе
- Делайте перерывы, чтобы следить за своими успехами
Создание плана поможет вам не сбиться с пути к достижению успеха в определенном деле. Соблюдение расписания дел даст вам время и возможность уделять больше внимания мелким деталям.
В начале каждого рабочего дня составляйте ежедневный список дел, включающий все задачи, которые вам нужно выполнить. Если вам нужно выполнить особенно сложную задачу, создайте список, включающий каждый шаг процесса. Время от времени просматривайте этот список, чтобы не пропустить ни одного шага.
Наряду с планом помогает научиться стать более внимательным, если вы будете делать подробные заметки. Когда руководитель дает вам проект для завершения, задавайте много вопросов и записывайте ответы.
Ведение подробных заметок позволяет вам быстро анализировать важные детали, вместо того, чтобы часто перепроверять электронную почту или рабочие документы.
Люди, склонные обращать внимание на детали, редко выполняют несколько задач одновременно, поскольку это замедляет их работу. Если вы хотите научиться обращать внимание на каждую деталь, каждый раз сосредотачивайтесь только на одной задаче. Проект, над которым вы сейчас работаете, требует вашего полного внимания. Чтобы стать более внимательным к деталям, содержите свое рабочее место или пространство в чистоте и порядке. Люди, склонные видеть детали, как правило, обладают хорошими организаторскими способностями
Чтобы стать более внимательным к деталям, содержите свое рабочее место или пространство в чистоте и порядке. Люди, склонные видеть детали, как правило, обладают хорошими организаторскими способностями.
Это позволяет им работать эффективно, не пропуская шаги или детали. Избегайте беспорядка и храните документы, используя удобную для вас систему. Если вы работаете на компьютере, держите рабочий стол и файловую систему организованными. Разместите документы в папках с четкими метками.
Чтобы стать более внимательным к деталям, вам также потребуется время от времени делать перерывы. Если вы часто торопитесь с проектами, вы можете упускать важные детали.
Иногда останавливайтесь, чтобы проследить за своим прогрессом и результатами. Определите, находитесь ли вы по-прежнему на правильном пути или вам нужно пересмотреть свои методы.
Direct3D 11
Windows 7 поддерживает новую версию direct3d, direct3d 11, основанную на проектировании API direct3d 10,1. К новым возможностям API относятся Многопотоковая визуализация и создание ресурсов, шейдер вычислений, поддержка уровней функций 10level9 и устройства WARP10 Software Rendering, а также новые функции оборудования класса Direct3D 11, такие как тесселяция, с использованием поверхности & шейдеров доменов, BC6H и BC7 форматов сжатия текстур, модели шейдеров 5,0 и динамической компоновки шейдеров. Новый API может использовать существующие видеокарты классов Direct3D 10 и 10,1, некоторые карты Direct3D 9 через уровни функций 10level9 с ограниченной поддержкой функций и последние видеокарты класса Direct3D 11 нового поколения.
в дополнение к API Direct3D 11 Windows 7 включает DXGI 1,1, Direct2D, DirectWrite и поддержку драйверов WDDM 1,1.
Примечание
с помощью Direct3D 11 и связанных api также можно обновить Windows Vista (см. статью KB 971644).
Что значит API?
Этот термин расшифровывается как Application Programming Interface, что в переводе на русский значит «Программный Интерфейс Приложения». Аббревиатура API используется часто и на слуху у многих пользователей, взаимодействующих с компьютерами (даже далеких от программирования). Правда, популярность термина не сделала его особо понятнее. Для многих это все еще набор символов без четкого значения. В лучшем случае пользователи в ответ на вопрос «Что такое API» скажут, что это инструмент для взаимодействия нескольких программ, в худшем – не скажут ничего.
И первые будут правы, потому что программный интерфейс включает в себя функции, классы, методы и структуры, помогающие одному приложению взаимодействовать с другим. API содержит в себе некие «мостики», позволяющие программе А получить доступ к данным из программы Б или к некоторым ее возможностям. Таким образом, программисты могут расширять функциональность своего продукта и связывать его с чужими разработками.
Все это с разрешения создателей программы А и с соблюдением всех мер безопасности, чтобы разработчики, желающие использовать API, не смогли получить доступ к конфиденциальной информации.
Главный принцип работы API. Почему его называют интерфейсом
Простыми словами, интерфейс – это «прослойка» между приложением А и приложением Б. В ней происходят процессы, которые позволяют двум программам обмениваться информацией и выполнять функции, связанные с обеими сторонами, скрывая «внутреннее строение» программ. Знакомо? Только что таким же образом мы описали API.
Такой подход позволяет наладить взаимодействие между несколькими утилитами, не задумываясь о том, как они устроены, какая программная логика ими движет и каким образом обрабатываются передаваемые данные. Интерфейсы упрощают работу как для простых пользователей, так и для программистов. Первым не приходится задумываться о том, что стоит за привычными функциями в их гаджетах, а разработчикам не нужно изучать код других программистов, чтобы подключить чужой продукт к своему.
Это называется инкапсуляцией. Сокрытием части функций ради упрощения работы в целом и минимизации участков программного обеспечения, где один из разработчиков мог бы допустить ошибку.
Рекомендации
При выборе API для графического приложения учитывайте следующие рекомендации.
- используйте Direct3D 9, если приложение должно поддерживать Windows XP или более раннюю версию Windows.
- используйте Direct3D 9, если вы хотите поддерживать Windows Vista или Windows 7, работающие с драйверами XPDM. в системах Windows Vista или Windows 7, в которых отсутствует Direct3D 10 или более производительное видеооборудование, можно выбрать использование существующего пути к коду Windows XP direct3d 9 или использование уровней функций 10level9 через API direct3d 10,1 или direct3d 11.
- используйте Direct3D 11, чтобы воспользоваться преимуществами нового поколения видеооборудования на Windows Vista, Windows 7 и Windows 8. Windows Приложения Магазина должны использовать Direct3D 11 или более поздней версии.
Пишем Mutation
В отличие от Query, Mutation в GraphQL используются для операций создания, изменения или удаления ресурсов. Для обучения будем пользоваться open-source api:
На изображениях ниже вы можете видеть простые примеры Mutation (на изменение и удаление ресурсов):
Пример Mutation на изменение ресурса (Update)Пример Mutation на удаление ресурса (Delete)
На последнем изображении мы написали Mutation, который удаляет запись c todo, которая создается на первом изображении (ID: 48440). Поле показывает, сколько записей в таблице было затронуто запросом. В дополнение, в ответе содержится сам объект, который был удален.
Примеры API
Посмотрим, как разработчики интегрируют сайты и приложения с внешними сервисами, используя API, и как это влияет на функционал веб-продукта.
Google Календарь
Google Calendar API взаимодействует с приложениями, связанными с бронированием, организацией мероприятий и иными событиями, для которых нужно выделять время. Приложение синхронизирует данные из нескольких сервисов и позволяет просматривать, редактировать и удалять информацию о будущих событиях в одном месте.
Например, пользователь заказал билет на самолет или на концерт. Google Calendar API автоматически добавит дату и время полета или мероприятия в календарь.
Погодные приложения
Большинство погодных приложений пользуются API. Их разрабатывают сервисы, которые сотрудничают с метеостанциями напрямую.
Приложение делает запрос о погоде в конкретной геолокации. Программный интерфейс обрабатывает его и связывает с метеорологическим спутником, а после передает информацию пользователю.
Сервис по заказу авиабилетов
Билеты на самолет можно купить на сайте авиакомпании, но есть специальные сервисы, которые помогают найти подходящий рейс на указанные даты по выгодной цене. Агрегатор отбирает данные с разных сайтов и показывает ее в одном окне. В России по такому принципу работает известный агрегатор Aviasales.
Чтобы быстро собирать актуальную информацию, разработчики приложения для покупки билетов пользуются API сервисов авиакомпаний.
Умный сервис сквозной аналитики от Calltouch так же работает по умному принципу: система объединяет данные о разных маркетинговых мероприятиях компании и создает информативные и понятные отчеты. Закажите сквозную аналитику и сократите бюджет на бесполезную рекламу.
Сквозная аналитика
от 990 рублей в месяц
- Автоматически соберет данные с рекламных площадок, сервисов и CRM в 1 окне
- Бесплатные интеграции c CRM и другими сервисами: более 50 готовых решений
- Анализируйте воронку продаж от показов до кассы
- Оптимизируйте свой маркетинг с помощью подробных отчетов: дашборды, графики, диаграммы
- Кастомизируйте таблицы, добавляйте свои метрики. Стройте отчеты моментально за любые периоды
Узнать подробнее
Кнопки авторизации
Часто сайты, где нужно зарегистрироваться, предлагают для авторизации использовать аккаунт на популярных площадках – , Google, ВКонтакте. Эти функции тоже выполняет API. С помощью кнопок авторизации сайт запрашивает данные о вашем аккаунте на стороннем ресурсе. После обмена информацией, сайт авторизует пользователя.
Навигация на сайтах и в приложениях
По аналогии с работой погодных приложений, другие сервисы тоже пользуются данными программных интерфейсов. Спутники предоставляют геоданные для тех или иных приложений. С ними работает API, проецируя на графический интерфейс карту. Эта карта используется не только в приложениях-навигаторах, но и в сервисах для вызова такси или заказа курьерской доставки.
Возвращай осмысленные сообщения об ошибках
Я мог бы целый день разглагольствовать о том, что null — это бесполезная конструкция. Она буквально означает ничего.
— Эй, модуль, дай мне пользователя!
— Неа. Вот тебе вместо этого ничего.
Это даёт мне нулевую информацию о том, что пошло не так, и что я могу сделать, чтобы улучшить ситуацию. Если вместо этого, у нас есть задокументированный способ выражения ожидаемых ошибок внутри нашей предметной области, таких как или , — это даёт мне гораздо более действенные данные и помогает отлаживать проблему.
Сообщения об ошибках должны следовать тем же правилам. «Вам нужно авторизироваться, прежде чем выполнить это действие» гораздо лучше, чем «LOL! Что-то пошло не так».