Современные цифровые решения — веб-приложения, микросервисные архитектуры и многофункциональное ПО — взаимодействуют между собой при помощи API, наборов программных интерфейсов. Пример их использования — размещение на веб-сайтах интерактивных карт, когда при помощи набора сервисов Яндекс или Google в сторонний проект добавляются картографические данные.
При помощи API пересылаются различные типы приватной информации. Например, у крупных банков есть собственные API, благодаря которым сторонние поставщики финансовых услуг интегрируют свои сервисы в банковскую инфраструктуру.
Так как API используют при пересылке личных и финансовых данных, то с ростом их числа увеличивается и интерес со стороны злоумышленников. Поэтому защита API — важный аспект информационной безопасности.
Что такое REST API?
Наиболее распространенной технологией организации программных интерфейсов является REST API. Термин REST (Representational State Transfer) означает передачу состояния представления и описывает способ получать и модифицировать данные удаленных приложений с помощью протокола HTTP. REST достаточно легко внедряется и обеспечивает кросс-платформенную переносимость любых API.
Введение в REST API за 7 минут
Практически всюду, где требуется организовать трансфер данных между сервером и пользователем сайта или веб-приложения, используется технология REST API. Поясним, как выглядит практическое применение REST API на примере наших страниц программных решений.
Вы можете заметить, что в правом верхнем углу расположено окно с кнопкой проигрывателя YouTube — когда вы нажимаете ее, веб-версия API осуществляет HTTP-запрос и запускает видеоролик по ссылке так, что смотреть его можно, не покидая сайт. То есть REST позволяет программам общаться друг с другом через стандартный протокол, при помощи которого получают почти всю информацию в интернете.
Если говорить о практическим применении технологии REST API в наших программных решений, то она используется в продукте «eKassir Адаптер для Системы быстрых платежей» — в модуле электронной коммерции для бизнеса. Наборы программных интерфейсов реализуют передачу между платежно-транзакционным сервером и веб-эквайрингом, благодаря которому пользователи совершают платежи по интернету.
Методы работы API
Запросы к веб-ресурсу или приложению исполняются при помощи различных способов обращения. От типа запроса зависит, как будет работать алгоритм. Традиционно архитектура REST API использует четыре метода:
- GET— чтение информации. Запросы, сформированные таким методом, отвечают за простую передачу данных с сервера, но не удаляют и не исправляют их.
- DELETE— удаление данных.
- POST— создание или регистрация записей.
- PUT— изменение или обновление данных.
Эти HTTP-запросы также называют идентификаторами CRUD (создание/чтение/обновление/удаление). Они определяют традиционные виды взаимодействия с данными. Например, чтобы удалить блок с YouTube-видео на странице решения, REST API будет использовать метод DELETE.
Что такое REST API простыми словами
Интересно, что архитектура REST API позволяет устанавливать приоритеты при работе с клиентами. Например, можно создавать URL, таргетированные на разные классы продуктов или услуг, размещая приоритетные материалы на более производительном сервере.
Для чего используют REST API
Почти все языки программирования и ОС по умолчанию поддерживают протокол HTTP (или его шифрованню версию HTTPS) — благодаря этому архитектура REST стала столь популярной.
REST API хорошо масштабируется и подходит для построения приложений с микросервисной архитектурой, при разработке которой важно разделение больших частей на маленькие. Кроме того, REST применяется для обращения сервисов к технологиям облачных вычислений. А поскольку технология подразумевает использование кэша, то это повышает общую производительность REST и, как следствие, она может быть использована на сайте или в сервисе, который будет значительно масштабироваться.
REST API применяется:
- При разработке микросервисных приложений
- Если требуется внести изменения в уровень базы данных, не задевая логику приложения
- При предоставлении доступа к программам поставщиков «третьей стороны»
- При ограниченной пропускной способности соединения с сервером
Пример реализации REST API
Технологией REST API пользуются все социальные сети — как на уровне авторизации, так и на уровне встраивания соцсети в сторонние проекты. Рядовой пример — кнопки Share, которые встречают на огромном количестве сайтов и позволяют разместить пост, комментарий или содержимое страницы в «ленте» социальной сети.
Нажатие такой интерактивной кнопки вызывает удаленный сервер, который посредством веб-версии API реализует запуск приложения или иной операции.
REST API использует популярнейший сервис микроблогов Twitter, запросы с которому отправляются в формате JSON. Сервер обрабатывает запрос клиента и возвращает ему ответ в виде доступа к ресурсу, расположенному по указанному URL.
Аналогичным образом мобильные (например, банковские) приложения связываются с серверными, с той лишь разницей, что передаваемые данные могут оборачиваться в другие форматы, например, XML.
Защита REST API
Безопасность API начинается с безопасности соединения, поэтому обязательно применение поддерживающего криптографическое шифрование HTTPS-протокола. Он гарантирует, что вся связь программных интерфейсов будет шифроваться с использованием SSL/TLS.
Важно использовать API ключи для авторизации или другой подходящий механизм отслеживания и ограничения количества и скорости запросов от пользователя, которые будут обрабатываться в течение установленного времени.
Для контроля безопасного доступа к интерфейсам также используют различные методы аутентификации REST API:
- Аутентификация HTTP — наименее надежный, но самый простой метод, который заключается в том, что конфиденциальные данные передаются в заголовках HTTP без шифрования.
- Аутентификация при помощиAPIKey — в этом методе применяется уникальный ключ для учетных данных. В такой схеме ключ является длинной последовательностью букв и цифр, которая отличается от пароля для входа владельца учетной записи.
- Применение протокола авторизации OAuth 2.0, позволяющего выдать веб-приложению права на доступ к пользовательским ресурсам на стороннем сервисе. Это один из наиболее надежных методов обеспечения безопасности: OAuth 2.0 используют, например, API Google и Mail.ru.
Источник: ekassir.com
Обзор REST. Часть 1: что такое REST
Привет, сегодня мы изучим с тобой очень интересную, а главное, востребованную на рынке труда тему — REST. Обзор REST мы разобьем на три части:
- В первой части мы коснемся истории возникновения REST и опишем принципы, на которых базируется REST.
- Во второй — рассмотрим, как происходит общение между клиентом и сервером по HTTP-протоколу.
- В третьей — напишем небольшое RESTful-приложение, которое протестируем с помощью программы Postman.
Статья рассчитана на читателя, знакомого со следующими терминами:
- HTTP;
- URL и URI;
- JSON и в меньшей степени XML;
- внедрение зависимостей (Dependency Injection).
Часть 1. Что такое REST
REST, как и многое в мире IT, — это акроним, сокращение от английского Representational State Transfer — передача состояния представления. Это архитектурный стиль взаимодействия компонентов распределенной системы в компьютерной сети.
Проще говоря, REST определяет стиль взаимодействия (обмена данными) между разными компонентами системы, каждая из которых может физически располагаться в разных местах. Данный архитектурный стиль представляет собой согласованный набор ограничений, учитываемых при проектировании распределенной системы. Эти ограничения иногда называют принципами REST. Их немного, всего 6 штук. О них мы поговорим чуть позже.
Приложения, построенные с учетом REST, т.е. не нарушающие накладываемые REST ограничения, называют RESTful. |
История возникновения REST
Термин REST ввел Рой Филдинг, один из создателей протокола HTTP, в своей докторской диссертации «Архитектурные стили и дизайн сетевых программных архитектур» («Architectural Styles and the Design of Network-based Software Architectures») в 2000 году. Можно сказать, что термин REST еще молодой, хотя его концепция лежит в самой основе всемирной паутины. Мы не будем погружаться глубоко в историю возникновения данного термина. Если хочешь окунуться в первоисточники, загляни в диссертацию Филдинга.
REST ограничения и принципы
Как было сказано выше, REST определяет, как компоненты распределенной системы должны взаимодействовать друг с другом. В общем случае это происходит посредством запросов-ответов.
Компоненту, которая отправляет запрос называют клиентом ; компоненту, которая обрабатывает запрос и отправляет клиенту ответ, называют сервером . Запросы и ответы, чаще всего, отправляются по протоколу HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста»). Как правило сервер — это некое веб-приложение. Клиентом же может быть не то чтобы что угодно, но довольно многое.
Например, мобильное приложение, которое запрашивает у сервера данные. Либо браузер, который отправляет запросы с веб-страницы на сервер для загрузки данных. Приложение А может запрашивать данные у приложения Б. Тогда А является клиентом по отношению к Б, а Б — сервером по отношению к А. Одновременно с этим, А может обрабатывать запросы от В, Г, Д и т.д.
В таком случае, приложение А является одновременно и сервером, и клиентом. Все зависит от контекста. Однозначно одно: компонента которая шлет запрос — это клиент. Компонента, которая принимает, обрабатывает и отвечает на запрос — сервер. Однако не каждая система, чьи компоненты обмениваются данными посредством запросов-ответов, является REST (или же RESTful) системой. Чтобы система считалась RESTful, она должна “вписываться” в шесть REST ограничений:
1. Приведение архитектуры к модели клиент-сервер
В основе данного ограничения лежит разграничение потребностей. Необходимо отделять потребности клиентского интерфейса от потребностей сервера, хранящего данные. Данное ограничение повышает переносимость клиентского кода на другие платформы, а упрощение серверной части улучшает масштабируемость системы. Само разграничение на “клиент” и “сервер” позволяет им развиваться независимо друг от друга.
2. Отсутствие состояния
Архитектура REST требует соблюдения следующего условия. В период между запросами серверу не нужно хранить информацию о состоянии клиента и наоборот. Все запросы от клиента должны быть составлены так, чтобы сервер получил всю необходимую информацию для выполнения запроса. Таким образом и сервер, и клиент могут «понимать» любое принятое сообщение, не опираясь при этом на предыдущие сообщения.
3. Кэширование
Клиенты могут выполнять кэширование ответов сервера. У тех, в свою очередь, должно быть явное или неявное обозначение как кэшируемых или некэшируемых, чтобы клиенты в ответ на последующие запросы не получали устаревшие или неверные данные. Правильное использование кэширования помогает полностью или частично устранить некоторые клиент-серверные взаимодействия, ещё больше повышая производительность и расширяемость системы.
4. Единообразие интерфейса
К фундаментальным требованиям REST архитектуры относится и унифицированный, единообразный интерфейс. Клиент должен всегда понимать, в каком формате и на какие адреса ему нужно слать запрос, а сервер, в свою очередь, также должен понимать, в каком формате ему следует отвечать на запросы клиента. Этот единый формат клиент-серверного взаимодействия, который описывает, что, куда, в каком виде и как отсылать и является унифицированным интерфейсом
5. Слои
Под слоями подразумевается иерархическая структура сетей. Иногда клиент может общаться напрямую с сервером, а иногда — просто с промежуточным узлом. Применение промежуточных серверов способно повысить масштабируемость за счёт балансировки нагрузки и распределённого кэширования. Приведем пример.
Представим себе некоторое мобильное приложение, которое пользуется популярностью во всем мире. Его неотъемлемая часть — загрузка картинок. Так как пользователей — миллионы человек, один сервер не смог бы выдержать такой большой нагрузки. Разграничение системы на слои решит эту проблему.
Клиент запросит картинку у промежуточного узла, промежуточный узел запросит картинку у сервера, который наименее загружен в данный момент, и вернет картинку клиенту. Если здесь на каждом уровне иерархии правильно применить кэширование, то можно добиться хорошей масштабируемости системы.
6. Код по требованию (необязательное ограничение)
Данное ограничение подразумевает, что клиент может расширять свою функциональность, за счет загрузки кода с сервера в виде апплетов или сценариев.
Преимущества, которые дает REST
- производительность (за счёт использования кэша);
- масштабируемость;
- прозрачность системы взаимодействия;
- простота интерфейсов;
- портативность компонентов;
- лёгкость внесения изменений;
- способность эволюционировать, приспосабливаясь к новым требованиям.
Источник: javarush.com
Введение в Rest API: что это простыми словами
Representational State Transfer (REST) в переводе — это передача состояния представления. Технология позволяет получать и модифицировать данные и состояния удаленных приложений, передавая HTTP-вызовы через интернет или любую другую сеть.
Если проще, то REST API — это когда серверное приложение дает доступ к своим данным клиентскому приложению по определенному URL. Далее разберем подробнее, начиная с базовых понятий.
Базовые понятия Rest API — HTTP-протокол и API
Application Programming Interface (API) , или программный интерфейс приложения — это набор инструментов, который позволяет одним программам работать с другими. API предусматривает, что программы могут работать в том числе и на разных компьютерах. В этом случае требуется организовать интерфейс API так, чтобы ПО могло запрашивать функции друг друга через сеть.
Также API должно учитывать, что программы могут быть написаны на различных языках программирования и работать в разных операционных системах.
Бухгалтерское приложение для выставления счетов. Счета хранятся на сервере: мобильное приложение обращается к нему через API и показывает на экране то, что нужно.
REST API позволяет использовать для общения между программами протокол HTTP (зашифрованная версия — HTTPS), с помощью которого мы получаем и отправляем большую часть информации в интернете.
HTTP довольно прост. Посмотрим на его работу на примере. Допустим, есть адрес http://website.com/something. Он состоит из двух частей: первая — это адрес сайта или сервера, то есть http://website.com. Вторая — адрес ресурса на удаленном сервере, в данном примере — /something.
Вбивая в адресную строку URL-адрес http://website.com/something, мы на самом деле идем на сервер website.com и запрашиваем ресурс под названием /something. «Пойди вот туда, принеси мне вот то» — и есть HTTP-запрос.
Пример HTTP-запроса к серверу
Теперь представим, что по адресу website.com работает программа, к которой хочет обратиться другая программа. Чтобы программа понимала, какие именно функции нужны, используют различные адреса.
В бухгалтерском сервисе работа со счетами может быть представлена в API ресурсом /invoices. А банковские реквизиты — ресурсом /requisites. Названия ресурсов придумывают по правилам формирования URL в интернете.
Методы HTTP: основа работы REST API
Чтобы ресурс, который вы запрашиваете, выполнял нужные действия, используют разные способы обращения к нему. Например, если вы работаете со счетами с помощью ресурса /invoices, который мы придумали выше, то можете их просматривать, редактировать или удалять.
В API-системе четыре классических метода:
- GET — метод чтения информации. GET-запросы всегда только возвращают данные с сервера, и никогда их не меняют и не удаляют. В бухгалтерском приложении GET /invoices вы открываете список всех счетов.
- POST — создание новых записей. В нашем приложении POST /invoices используется, когда вы создаете новый счет на оплату.
- PUT — редактирование записей. Например, PUT /invoices вы исправляете номер счета, сумму или корректируете реквизиты.
- DELETE — удаление записей. В нашем приложении DELETE /invoices удаляет старые счета, которые контрагенты уже оплатили.
Таким образом, мы получаем четыре функции, которые одна программа может использовать при обращении к данным ресурса, в примере — это ресурс для работы со счетами /invoices.
Построение API-системы с использованием ресурсов, HTTP и различных запросов к ним как раз и будет Representational State Transfer (REST API) — передачей состояния представления.
Для чего используют REST API
Архитектура REST API — самое популярное решение для организации взаимодействия между различными программами. Так произошло, поскольку HTTP-протокол реализован во всех языках программирования и всех операционных системах, в отличие от проприетарных протоколов.
Чаще всего REST API применяют:
- Для связи мобильных приложений с серверными.
- Для построения микросервисных серверных приложений. Это архитектурный подход, при котором большие приложения разбиваются на много маленьких частей.
- Для предоставления доступа к программам сторонних разработчиков. Например, Stripe API позволяет программистам встраивать обработку платежей в свои приложения.
Что еще важно знать при работе с REST API
Каждый REST API запрос сообщает о результатах работы числовыми кодами — HTTP-статусами.
Например, редактирование записи на сервере может отработать успешно (код 200), может быть заблокировано по соображениям безопасности (код 401 или 403), а то и вообще сломаться в процессе из-за ошибки сервера (код 500). Цифровые статусы выполнения ошибок — аналог пользовательских сообщений с результатами работы программы.
Также REST API позволяет обмениваться не только текстовой информацией. С помощью этого инструмента можно передавать файлы и данные в специальных форматах: XML, JSON, Protobuf.
Есть и другие способы построения API-систем, например: JSON-RPC, XML-RPC и GraphQL. Но пока REST остается самым популярным и востребованным инструментом для построения взаимодействий между удаленными приложениями.
За годы использования REST инженеры накопили много практик по разработке API, балансировке и обработке API HTTP-трафика на облачных и железных серверах, а также в приложениях, которые работают в контейнерах. Так что REST API — пример решения, которое подходят для почти любых систем.
Источник: dzen.ru