Skip to content

Latest commit

 

History

History
104 lines (65 loc) · 8.91 KB

File metadata and controls

104 lines (65 loc) · 8.91 KB

API (Application Programming Interface – интерфейс программирования приложений, интерфейс прикладного программирования)

API в данной структуре служит местом соприкосновения компонентов (клиента и сервера). Зачастую приводят пример с рестораном. Вот Вы (клиент) пришли в ресторан и сели за стол. Ваша цель получить те или иные блюда. К Вам подходит официант (API) и принимает заказ (запрос к серверу). Далее официант подходит к повару (сервер) и говорит, что нужно приготовить. Повар открывает холодильник (база данных), берет нужные продукты, готовит блюда (ответ сервера), зовет официанта и отправляет блюда клиенту.

По сути, API - это договор/контракт по взаимодействию между компонентами системами.

API — это интерфейс (совокупность способов, средств, правил и возможностей взаимодействия кого-либо или чего-либо с кем-либо или чем-либо).

У сервера свои правила и обязанности:

  • Обращаться ко мне следует по определенному протоколу (например, HTTP).
  • Я готов принимать данные в определенном формате (например, JSON).
  • В запросе должны присутствовать определенные обязательные поля (например, name, age).
  • Эти поля должны содержать данные определенного типа (например, строки и числа) и так далее.

В свою очередь, у клиента свои правила:

  • Я ожидаю ответ в конкретном формате.
  • Я ожидаю ответ в определенной кодировке и так далее.
  • У баз данных также есть свои правила:

Я понимаю только SQL.

  • Для запроса информации используйте SELECT.
  • Для внесения информации используйте INSERT INTO и так далее.
  • При соблюдении всех договоренностей и правил взаимодействия между компонентами, система будет функционировать корректно.

Виды работы с API

Клиент-серверная архитектура

Для понимания API важно знать о взаимодействии ПО. Рассмотрим, как это устроено и какую роль играет API.

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

Клиент-серверная архитектура подразумевает разделение обязанностей выполнения тех или иных функций на различные части ПО.

В этой архитектуре выделяются 3 основных компонента:

  • Клиент;
  • Сервер;
  • База данных;

Клиент – это та часть ПО, с которой взаимодействует пользователь. Например, когда Вы читаете этот текст в браузере или в мобильном приложении, Вы работаете с клиентской частью ПО.

Более формально - клиентом является любая программа способная отправлять запросы на сервер.

Обязанности клиента:

  • отправка запроса на сервер
  • получение ответа от сервера
  • визуализация ответа
  • хранение данных

Примеры клиентов:

  • браузер ПК
  • браузер смартфона
  • мобильные приложения
  • десктопные приложения
  • умные часы и т.д.

Сервер – это компонент ПО, ответственная за логику обработки запросов от клиента. Сервер - это невидимая для пользователя часть ПО. В клиент-серверной архитектуре логика исполняется серверной частью.

Обязанности сервера:

  • получение запроса от клиента
  • обработка данных и запросов
  • обращение в базу данных для получения, внесения, обновления, удаления информации

База данных — это компонент ПО, отвечающий за хранение данных. Также как и сервер, она невидима для пользователя. База данных получает от сервера запросы и возвращает ответы. Сервер обращается к реляционной базе данных и получает от неё ответ посредством языка структурированных запросов SQL.

Базы данных делятся на два основных типа:

  • Реляционные: данные хранятся в таблицах и строках. Взаимодействие осуществляется при помощи SQL.
  • Нереляционные (NoSQL): данные могут храниться в различных форматах, таких как "ключ-значение", документные, графовые и другие.

Основные функции баз данных:

  • хранение данных;
  • обработка запросов от сервера;
  • отправка ответов серверу.

Для наглядности:

Выше перечислены основные сущности в клиент-серверной архитектуре. В клиент-серверную архитектуру также могут быть интегрированы прокси-серверы, CDN, балансировщики, кэши и иные компоненты.

Примечание №1.

Бывают исключения, когда клиент выполняет часть логики. Такие клиенты называются "Толстыми клиентами".

Толстый клиент - это клиент, который использует мощности устройства (оперативная память, процессор и т.п.). Например, приложение редактирования фото на смартфоне. Оно может работать без подключения к интернету. Вы локально можете запустить приложение, выбрать фото из альбома смартфона, отредактировать и сохранить фото в памяти смартфона. Вся логика выполняется на стороне клиента и все действия были сделаны благодаря ресурсам смартфона(в данном кейсе).


2.3 Networking Folde Theme | Back To iOSWiki Contents | 2.3.1.2 Rest API Theme