Что такое API?
Вы когда-ли задумывались о том, как вы можете войти в ваши любимые приложения, такие как Facebook, Hashnode, dev.to, LinkedIn и так далее? Я знаю, что моя отметина привлекла ваше внимание, и вы начали думать быстро. или что вы сейчас представляете, насколько легко было войти в WakaNow приложение для авиаперелётов и получить самые дешевые и доступные цены по всему миру? Если даже любители футбола не оставлены в стороне, так как они могут получать результаты игр в реальном времени.
Ответ на все эти вопросы в том, что имплементирующие системы общаются друг с другом, чтобы получить эти данные или проверить данные, и способ общения – это через API.
В этой статье будет рассмотрено понятие API, и будет получено ясное и актуальное понимание того, что такое API, их типы и их способ работы.
I. Введение в API
A. Что такое API?
API, что stands for Application Programme Interface, является просто инструментом, посредством которого системы или технологии могут общаться с собой, share information or data. It can be further explained as a layer through which systems can communicate with each other following a protocol or standard by which the sharing happens.
B. WHY ARE APIs important?
API важны, потому что позволяют системам и технологиям взаимодействовать друг с другом, обмениваться данными и функциональностью и работать вместе, создавая мощные и эффективные системы. Кроме того, API дают разработчикам супервозможность объединять приложения для выполнения определенной задачи. Например, блог о моде может интегрировать Flutterwave API, чтобы клиенты могли оплачивать модели или семинары, вы также можете использовать свой аккаунт Google для входа в любое приложение, связанное с ним.
API могут использоваться для получения данных от третьих сторон и обмена информацией, что позволяет нам как инженерам-программистам делать безумные вещи.
C. Как работают API?
Давайте проведем такую аналогию: вы хотите учиться в университете. Вам нужно пройти ряд процессов, включающих сдачу экзаменов и поступление в желаемое учебное заведение. Вам не нужно идти непосредственно в приемную комиссию для подачи заявления, достаточно просто посетить их портал, ввести свои данные и загрузить документы. Пока вы ожидаете зачисления, на задней панели происходит ряд событий, о которых вы даже не догадываетесь, но при соблюдении всех требований вас зачислят.
Весь процесс выглядит следующим образом: мы хотим связаться с приемной комиссией школы, и поскольку мы не можем получить доступ к ней напрямую, мы используем уровень API, который в данном случае представляет собой школьный портал, называемый Endpoint. Каждая конечная точка имеет свой протокол, который требуется и ожидаемый результат. В данном примере школьный портал ограждает вас от всех сложных вещей, происходящих в приемной комиссии.
Представьте себе, чтобы не было портала поступления, вам пришлось бы идти в офис приёма вузов, чтобы представить свои данные, что может быть неproductivity и небезопасно.
Чтобы соединить два программных приложения через интернет, одна программа, известная как клиент, отправляет запрос на API другого приложения. Клиент просит ресурсы из базы данных приложения или просит о выполнении действия на сервере.
После получения и проверки запроса клиента API выполняет требуемое действие и возвращает ответ клиенту. Этот ответ состоит из статуса запроса (завершенного или отклоненного) а также любых ресурсов, запрошенных клиентом.
рис 1. Работа API
D. Типы API
Есть примерно четыре различных типа API, которые будут объяснены.
Public API: Public API или внешняя API – это тип API, который открыт и доступен для использования общественности. OWNER API share their data and resources with 3rd parties which could include organizations, developers and the general public at large. The special purpose is to let anyone build with it, integrate it into applications or work on improving them.
Some examples of public APIs include; Bitquery, Adoptapet, covalenthq.
Private API:
Частный API или внутренний API является типом API, который доступен только для разработчиков или лицом, который его создал. Он может быть доступен только при отправке приглашения владельцем(ами) третьей стороне.
Некоторые примеры частных API включают;
Партнерские API
Партнерский API (также известен как третьих лицом API или API для разработчиков) — это интерфейс программного обеспечения, который предлагает компания или организация, чтобы позволить внешним разработчикам или партнерам взаимодействовать и интерфейсироваться со своими услугами, данными или платформой. Эти API предназначены для упрощения интеграции различных систем, программ или услуг.
Компании, которые хотят расширить полезность своих товаров или услуг и способствовать сотрудничеству с внешними разработчиками или предприятиями, часто предоставляют партнерские API. Благодаря этим API партнеры могут создавать программы, инструменты или услуги, использующие данные, функции или технологию компании.
Как примеры партнерских API могут быть:
Композитные API
Композитные API, также известные как агрегирующие API или API-мокши, это типы API, которые смешивают и агрегируют информацию или функциональность из нескольких базовых API или служб в единое интерфейсное пространство. Эти API упрощают процесс интеграции и предлагают объединенный обзор нескольких источников данных, позволяя разработчикам получать доступ и взаимодействовать с различными сервисами через单个 API.
Когда программистам нужно непрерывно получать информацию или выполнять несколько действий из множества источников, помогают компонентные API. Компонентный API позволяет разработчикам отправить одно запрос, чтобы получить данные или выполнить действия в рамках многих служб, вместо отправки отдельных запросов к каждому API. Благодаря этому процесс интеграции оптимизирован, сложность уменьшена, и эффективность увеличена.
Вот пример компонентного API, который агрегирует данные о погоде от множества поставщиков погодных услуг:
Чтобы агрегировать данные о погоде от этих множества поставщиков и предоставить разработчикам единый интерфейс данных о погоде, может быть создан компонентный API. Это позволяет разработчикам получать информацию о погоде от нескольких источников одним запросом API.
II. Типы архитектуры API
A. Веб-API
Web API являются наиболее commonly используемые, поскольку большинство наших повседневных действий вращаются вокруг веб. Web API являются стандартами, которые позволяют things быть одинаковым образом на различных браузерах.秦国 refers to обе стороны коммуникации. Web API, commonly referred to as Application Programming Interfaces (APIs), are interfaces made available by web services or apps that enable online communication and interaction between them and other software programmes. Developers can programmatically access certain capabilities, services, or data from a web application or service thanks to web APIs.
1. RESTful APIs
RESTful APIs, which stands for Representational State Transfer Application Programming Interface, is a set of standards that allow computers to communicate with each other over the web following the design principles of the REST (or REpresentational State Transfer) architecture.
Part of a REST API Includes
-
Request —–→ Response
-
Operation – GET, POST, PATCH, UPDATE, DELETE
-
Endpoint – Url
-
Parameter/Body
-
Headers
Fig 2 A REST API diagram
The key principles of REST include:
-
Клиент-серверная архитектура: REST разделяет компоненты клиента и сервера, позволяя им развиваться независимо. Клиент посылает запросы серверу, который обрабатывает эти запросы и возвращает ответы.
-
Без состояния: REST является безсостоятельной архитектурой, что意味着 каждый запрос клиента серверу должен содержать все необходимые данные для понимания и обработки запроса. Сервер не хранит какого-либо контекста клиента между запросами, что simplify сalebility и позволяет лучшее кэширование.
-
Uniform Interface: REST рекомендует унифицированный набор интерфейсов и операций, обычно используя стандартные HTTP-методы, такие как GET, POST, PUT и DELETE. Каждое ресурса в системе RESTful идентифицируется уникальным URL (Uniform Resource Locator).
-
Ресурсоориентированно: REST рассматривает все как ресурсы, такие как данные, услуги или коллекции. Каждый ресурс имеет уникальный идентификатор и может быть обработан с использованием стандартных HTTP-методов.
-
Различение ресурсов: Ресурсы в REST представлены с помощью конкретного формата, такого как JSON (JavaScript Object Notation) или XML (eXtensible Markup Language). Сервер возвращает представления ресурсов клиенту, которые могут включать данные, метаданные или гиперссылки медиатемы.
-
Без состояния взаимодействия: Каждая запрос, отправленный клиентом на сервер, является самостоятельным и не зависит от любых предыдущих запросов или состояний на сервере. Это позволяет лучшей skaliru, так как сервер не требует поддержания информации о сессии клиента.
Преимущества REST API
-
Проста и стандартизированна
-
Масштабируемый и нестационарный
-
High-performance and cacheable
2. SOAP APIs
SOAP, что означает Simple Object Access Protocol, – это веб-сервис, соответствующий спецификации SOAP веб-сервисов. Это популярный протокол обмена сообщениями, использующий XML в качестве формата, четко определенной схемы и пользовательского стандарта протокола. Он определен Консорциумом Всемирной паутины. Протоколы SOAP охватывают широкий ряд протоколов интернет-коммуникаций, в частности HTTP, SMTP и TCP/IP.
Рис. 3 Диаграмма SOAP API
Преимущества использования SOAP API
-
Язык, платформа и транспорт независимы.
-
Хорошо работает в распределенных корпоративных средах.
-
Предоставляет значительную расширяемость перед сборкой в виде стандартов WS*.
-
Встроенная обработка ошибок.
- RPC.
Удаленный процедурный вызов (RPC) — это протокол для пересылки multiple parameters и получения результатов. Это удаленный вызов функции, он не существует на вашем локальном компьютере, но должен быть установлен откуда его вызывают. Он асинхронен в том смысле, что вам нужно получить ответ, чтобы быть маркированным как успешный. Это простая взаимодействия между клиентом и сервером. RPC API вызывает операции или процедуры operacionales. RPC может использовать два различных языка, JSON и XML.
рис 4 PROTOCOLO RPC
GraphQL – это язык запросов для API, который позволяет клиентам запрашивать конкретные данные и формировать ответ согласно их потребностям.
一些GraphQL API的例子
GitHub GraphQL API, Shopify GraphQL API, SpaceX GraphQL API, Yelp GraphQL API, Twitter GraphQL API (Twitter API v2).
比较API协议
REST |
SOAP |
RPC |
GraphQL |
Работает с XML, JSON, HTTP и простым текстом |
Работает с XML по умолчанию |
Требует от пользователей знание имён процедур |
Работает с HTTP |
Хорошо работает с данными |
Хорошо работает с процессами (действиями) |
Специфические параметры и порядок |
|
Умеренная безопасность |
Продвинутая безопасность |
||
Документация может быть дополнена гипермедиа |
Самый сложный для разработчиков инструмент |
Требует обширной документации |
|
Методы запроса: GET, PUT, DELETE, PATCH, UPDATE. |
Метод запроса – POST |
Метод запроса – POST |
Метод запроса – POST |
III. Общее понятие API
A. Концепции
Концепция API – это точка взаимодействия между двумя системами. Когда API взаимодействует с другой системой, точки этого взаимодействия называются концепциями. Литерально, место, где API поставляет ресурсы и откуда ресурсы уходят, называется концепцией. В API, концепция, как правило, представляет собой унифицированный адрес ресурса (URL), который обеспечивает местонахождение ресурса на сервере.
Пример концепции –
Пример концепции Twitter API
API Twitter暴露有关推文、直接消息、用户等的数据。
比方说你想检索特定推文的内容。为此,你可以使用推文查找端点,其URL为api.twitter.com/2/tweets{id}(其中{id}是推文的唯一标识符)。
B. Запросы и ответы
Запрос API – это сообщение, отправленное от клиента на сервер. Запрос API – это запрос, сделанный к API для доступа или изменения данных или выполнения определенной деятельности. Ответ API – это данные или информация, возвращаемая в ответ на запрос API.
Например, пользователь нажмет на следующий гиперссылку ниже;
<a href=’http://localhost:2400/categories/01/flavours ’>
Show all flavours available in the flavour category
</a>
HTTP запрос сообщение будет отправлено как:
GET /categories/01/flavours HTTP/1.1
Хост: localhost:2400
User-Agent: Chrome/5.0 [compatible, Windows 10]
Запрос API
<код>1.Copy codeGET https://api.com/categories/flavours
Ответ API
<код>1.Copy codeHTTP/1.1 200 OK
<код>2. Content-Type: application/json
3.
<код>4. {
<код>5. “id”: 01,
<код>6. “flavours”: “Chocolate”
<код>7. }
Из этого запроса мы можем увидеть, что конечнымpunkтом является URL – /categories/01/flavours.
Метод запроса – GET, спецификация HTTP – 1.1, домен – localhost, порт – 2400, ресурс – Flavours, и user-agent представляет браузер и операционную систему.
C. HTTP Methods (GET, POST, PUT, DELETE)
API, использующие HTTP-протокол, используют HTTP-методы запроса (также известные как “HTTP-вербалы”) для передачи клиентских запросов серверу.最常用的HTTP请求方法是GET,POST,PUT和DELETE。
-
GET用于客户端从服务器获取数据,
-
PUT替换现有数据或创建不存在的数据,
-
POST主要用于创建新的资源,
-
PATCH используется для частичной обновления данных с ресурса, а
-
DELETE удаляет данные или ресурсы, указанные клиентом на сервере.
D. API Security – Authentication and Authorization
Эти два термина могут звучать схоже, но у них разные функции. Аутентификация связана с проверкой пользователей или идентификации, в то время как авторизация связана с доступом, который имеет пользователь или разрешено для действия. Они являются краеугольными камнями безопасности API. Один из популярных методов аутентификации и авторизации пользователей является OAuth 2.0.
Различные типы авторизации
Есть несколько методов для авторизации. ниже представлены различные типы API-авторизации, с которыми можете столкнуться:
-
Ключи API
E. API Ключи и токены
API-ключи — это строки текста, которые обеспечивают идентификацию клиентской приложения и авторизацию клиентской приложения. Другими словами, они идентифицируют приложения, которые вызывают сервер, и определяют, имеет ли вызывающее приложение разрешено доступа к серверу API. Его используется для отслеживания всех действий и блокирования спама.
Аутентификация API-ключа была создана для решения недостатков общей информации о входе, который является основным проблемой HTTP-базовой аутентификации. Она может использоваться для двух целей. Первым шагом является идентификация клиентского приложения, которое совершает вызов вашего API-сервера. Вторым шагом является авторизация клиентского приложения, которая определяет, имеет ли вызывающее приложение полученное разрешение на вызов API.
API-ключи получаются от провайдеров API-ключей, управляемых web-приложением.
Где сохранять ваши API-ключи
Не вставляйте ваши ключи в код или в файлы, поскольку их могут обнаружить, когда вы будете отправлять на GitHub, лучше сохраняйте ваши API-ключи в environment variable.
Пример API-ключа может выглядеть следующим образом.
ключ: a9nIbdnaoks97028Jlf.ains9NIKQMEO
Аксесс-токен является средством идентификации и аутентификации доступа к API (Application Programming Interface). Токены являются уникальными удостоверениями владельца, который имеет право доступа к API.
Вот пример JSON Web Token (JWT):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Это JWT, состоящий из трех частей, разделенных точками: заголовок,payload и подпись. Заголовок обычно содержит информацию о алгоритме подписи токена, например:
{
"alg": "HS256",
"typ": "JWT"
}
Payload содержит заявления или заявления о субъекте (пользователь, клиент и т. д.) и может включать информацию, такую как тема, emitter, срок действия и custom data. Например:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Сигнатура создается путем применения кодированного заголовка, payload и секретного ключа к криптографическому алгоритму, такому как HMAC-SHA256. Сигнатура обеспечивает целостность и подлинность токена.
При использовании этого JWT клиент включает его в заголовке авторизации API-запросов, например:
Авторизация: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
API сервер может затем проверить подлинность токена, проверить истечение срока действия и использовать информацию, содержащуюся в paylоад, для аутентификации и других целей.
Обратите внимание, что пример токена, приведенный здесь, предназначен только для иллюстративных целей и не должен использоваться в производственной среде.
Токены и ключи оба используются для аутентификации и авторизации, однако их можно отличить по следующим причинам:
Ключи API обычно используются для идентификации и аутентификации клиентов или приложений при обращении к API. Они часто имеют форму длинных случайных строк, выступающих в качестве удостоверений. Токены, напротив, выдаются авторизированным клиентам или пользователям после успешного процесса аутентификации и выступают в качестве доказательства аутентификации.
Срок действия: unless deliberately revoked or rotated by the API provider, API keys generally have a lengthy lifespan. Tokens, on the other hand, frequently have a short lifespan and an expiration date. Depending on the authentication technique, the client must either re-authenticate or use a refresh token to receive a new token once the old one expires.
Безопасность:Token, как правило, предлагают лучшие featyures безопасности, чем ключи API.Token могут быть разработаны с ограниченными областями или разрешениями, позволяя тонкое управление доступом. They can also be encrypted, signed, or contain additional claims that provide integrity and authenticity. Это позволяет обеспечить более безопасную автентификацию и лучшую защиту sensible data.
Примеры и применения из реального мира
A. Weather API
Weather APIs, или Application Programming Interfaces, – это сервисы, которые предлагают доступ в реальном времени к данным о погоде и прогнозам.
Примеры включают
. WeatherAPI.com, Forecast, Meteostat.
B. Social Media API
Social network APIs позволяют этим платформам интегрироваться с другими поставщиками ПО и приложениями.
Примеры включают
API платежного портала
Технологический интерфейс, который позволяет разработчикам программного обеспечения включать услуги платежного портала в свои приложения или сайты, называется API платежного портала.
Примеры включают
Сервис Stripe API. Stripe – это хорошо известный сервис, который позволяет продавцам принимать платежи онлайн, Noodlio Pay, Square API, PayPal, Adyen, Paybook, KeyPay, BIPS Фактура (через Coinify).
D. API картографирования и геолокации
Геолокационный API не сохраняет никакой информации, а позволяет собрать существующие данные от устройства, которое исследуется. Возможно, он будет собирать данные о позиции от различных источников, включая IP-адрес, GPS, Wi-Fi, Bluetooth, RFID, ID GSM/CDMA, и человеческий ввод.
Примеры: Geolocation API, Mapbox API, OpenStreetMap API, MapQuest API, HERE API.
IV. Заключение и выводы
В этой статье мы выяснили, что такое API, как он работает, примеры из реальной жизни, APISecurity, методы HTTP и важность API. Было сделано заключение, что API позволяет инженерам-программистам интегрировать приложения в создаваемую систему и даже улучшать ее. В ходе исследований и написания статей я обнаружил, что огромной проблемой является безопасность API. Если API будет взломан, это повлияет на все приложения, подключающиеся к нему, поэтому я буду продолжать свои исследования по безопасности API.
В конце концов, я выпущу еще одну статью в связи с этим, поскольку она будет посвящена изучению API, работе с API в кодах, лучшим практикам API, проектированию и разработке API.
A. Некоторые ключевые слова включают
API – Application User Interface
RPC – Remote Procedural Call
HTTP – Hypertext Transfer Protocol
B. Следующие шаги для дальнейшего обучения
В конце концов, я выпустят еще один article о этом, поскольку это будет касаться исследования API, работы с API в коде, лучших практик API, дизайна и разработки API.