Сравнительный анализ подходов в разработке API веб-приложений.



На текущий момент существует три популярных подхода в разработке API веб-приложений: REST, SOAP и GraphQL

REST-передача состояния представления. Является не протоколом, а архитектурным стилем, именно поэтому не существует единого стандарта его использования. Данный термин был введен Роем Филдингом в 2000 году. На данный момент этот стиль чаще всего используется для общения клиента с сервером по протоколу НТТР.

Запросы на сервер совершаются с использованием НТТР-методов. Самые популярные из них: GET, POST, PUT, DELETE. Так же часто для указания дополнительной информации используются НТТР-заголовки и параметры запросов. Иногда разработчики ограничиваются поддержкой только двух методов запросов – GET и POST. Это связанно с тем, что HTML-формы поддерживают только их.

Например, у сервера есть некоторые ресурсы – данные о пользователях приложения, и АРI доступно по адресу «/арi/». Клиенту необходимо получить данные о пользователе с идентификатором «11». В RЕSТ такой запрос может выглядеть следующим образом: «GЕТ/арi/usеrs/11». Данные о пользователе могут передаваться в любом формате. Все параметры запроса обычно указываются стандартно по протоколу НТТР.

SOAP-простой протокол доступа к объектам. В отличии от REST является протоколом и стандартизован Консорциумом Всемирной паутины. Может использоваться с любым протоколом прикладного уровня, но чаще всего используется вместе с НТТР.

В рамках АРI веб-приложения в теле как запроса, так и ответа по протоколу НТТР передается ХML. С помощью схемы изначально определяется формат сообщения. У сервера веб-приложения в случае данного подхода есть только один вход, а сервер вызывает процедуру, интерпретируя полученные данные. Пакеты, передаваемые между клиентом и сервером, называют SОАР-конвертами. В структуре конверта основной раздел Envelop, который включает в себя либо Header и Body, либо Fault в случае ошибки.

Вместе с SОАР используют WSDL – язык, основанный на ХML и созданный для описания работы веб-приложений. С помощью файла в данном формате описывается вся техническая информация для взаимодействия клиента с сервером: типы данных, элементы данных, список операции и способ доставки сообщения. Таким образом, клиенту для начала работы с АРI сервера необходим данный файл.

GraphQL- язык запросов данных для API с открытым кодом, созданный в Facebook, который использует его в своих проектах с 2012 года. GraphQL стандартизирован и имеет подробную спецификацию.

Язык создавался как альтернатива REST и с целью уменьшить количество запросов для представления данных. АРI, спроектированное таким образом, имеет одну точку входа и позволяет получить данные, который предоставляет сервер, в формате JSON с любой вложенностью и в необходимом количестве. То есть сервер может отдать свои ресурсы, как это удобно клиенту, и нет необходимости создавать обработку множества запросов для разных данных с целью поддержки универсальности для клиентов.

При разработке АРI сначала описывается схема данных – объекты и их строго типизированные поля, которыми оперирует сервер. Далее описываются распознаватели – функции, через которые можно получить доступ к этим объектам. Ограничения по безопасности можно ставить на уровне распознавателей.

После этого со стороны клиента на сервер можно отправлять запросы. Синтаксис запросов GraphQL довольно богат и поддерживает следующую функциональность: аргументы полей, переменные, директивы и фрагменты для создания динамических запросов, аллиасы для смены имен полей в ответе сервера, именные запросы для избегания дублирования кода, получение метаданных сервера, например, типов полей или схемы данных.

Как уже говорилось раннее, у каждого из подходов есть как преимущества, так и недостатки, которые являются, как и при их изучении, так и при практической реализации.

 

Практическая часть

Алгоритм решения задачи

Алгоритм решения задачи - конечная совокупность точно заданных правил решения некоторого класса задач или набор инструкций, описывающих порядок действий исполнителя для решения определённой задачи.

Исполнитель алгоритма — это некоторая абстрактная или реальная, то есть техническая, биологическая или биотехническая система, способная выполнить действия, предписываемые алгоритмом.

Различные определения алгоритма содержат следующий ряд общих требований:

- Дискретность. Алгоритм должен представлять процесс решения задачи как упорядоченное выполнение некоторых простых шагов. При этом для выполнения каждого шага алгоритма требуется конечный отрезок времени, то есть преобразование исходных данных в результат осуществляется во времени дискретно.

- Детерминированность. В каждый момент времени следующий шаг работы однозначно определяется состоянием системы. Таким образом, алгоритм выдаёт один и тот же результат, т.е. ответ, для одних и тех же исходных данных.

- Понятность. Алгоритм должен включать только те команды, которые доступны исполнителю и входят в его систему команд.

- Конечность. В более узком понимании алгоритма как математической функции, при правильно заданных начальных данных алгоритм должен завершать работу и выдавать результат за определённое число шагов.

- Массовость. Алгоритм должен быть применим к разным наборам начальных данных.

- Результативность — завершение алгоритма определёнными результатами.

Каждый исполнитель может выполнять команды только из некoтoрoгo строго заданного списка — системы команд исполнителя. Для каждой команды должны быть заданы условия применимости: в каких состояниях сpеды может быть выполнена команда, и описаны pезультаты выполнения команды.

Можно выделить алгоритмы вычислительные, и управляющие. Вычислительные преобразуют некоторые начальные данные в выходные, реализуя вычисление некоторой функции. Семантика управляющих алгоритмов существенным образом может отличаться и сводиться к выдаче необходимых управляющих воздействий либо в заданные моменты времени, либо в качестве реакции на внешние события.

Алгоритм решения задачи разработки приложений на базе API-функций:

- составление диаграммы вариантов использования различных команд;

- составление диаграммы бизнес-процессов системы;

-  упрощение и оптимизация алгоритма;

- написание кода программы;

- отладка программы;

 


Дата добавления: 2021-07-19; просмотров: 133; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!