Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Методы работы с данными

Все темы QA

Какие способы взаимодействия с API существуют? В чем разница между ними?

Взаимодействие с API (Application Programming Interface) может быть реализовано разными способами, каждый из которых подходит для различных сценариев использования. Вот некоторые из основных способов взаимодействия с API:

  1. REST (Representational State Transfer):

    • Использует стандартные HTTP методы (GET, POST, PUT, DELETE).

    • Ориентирован на работу с ресурсами, где каждый URL представляет собой ресурс.

    • Может использовать различные форматы данных (чаще всего JSON).

    • Не сохраняет состояние между запросами, что облегчает масштабирование.

  2. SOAP (Simple Object Access Protocol):

    • Строго определённый протокол, который обменивается информацией в формате XML.

    • Поддерживает расширенные функции безопасности и транзакционность.

    • Часто используется в корпоративных и финансовых приложениях, где требуется высокий уровень безопасности и надежности.

  3. GraphQL:

    • Позволяет клиентам точно определять, какие данные им нужны.

    • Уменьшает количество запросов и объем передаваемых данных по сравнению с REST.

    • Использует единственный эндпоинт и обрабатывает запросы через спецификации, которые определяют структуру данных.

  4. gRPC (Google Remote Procedure Calls):

    • Основан на HTTP/2, что позволяет устанавливать долгоживущие соединения и многократно использовать их для отправки потоков данных.

    • Использует бинарный формат (Protocol Buffers), что делает его более эффективным по сравнению с текстовыми API.

    • Подходит для микросервисной архитектуры, где важна высокая производительность и низкая задержка.

  5. WebSocket:

    • Поддерживает двустороннее постоянное соединение между клиентом и сервером.

    • Идеален для приложений, требующих частых и быстрых обновлений в реальном времени, например, для онлайн-игр или чатов.

Различия между ними:

  • Гибкость: REST и GraphQL предлагают большую гибкость в выборе форматов данных и структуры запросов, в то время как SOAP и gRPC более строги в этих аспектах.

  • Производительность: gRPC и WebSocket могут обеспечивать лучшую производительность для определенных задач за счет бинарного формата и постоянных соединений.

  • Функциональность: SOAP предоставляет комплексные возможности транзакционности и безопасности, что делает его предпочтительным в некоторых корпоративных средах.


Как можно протестировать API, что там нужно проверять?

Тестирование API (Application Programming Interface) включает в себя проверку различных аспектов взаимодействия между клиентом и сервером. Вот ключевые аспекты, которые необходимо учитывать при тестировании API:

  1. Функциональность:

    • Проверка того, что API выполняет все функции в соответствии с требованиями спецификации.

    • Проверка корректности ответов API на запросы и корректность выполнения операций.

  2. Надёжность:

    • Убедиться, что API может успешно обрабатывать различные типы запросов и нагрузки.

    • Тестирование на устойчивость к ошибкам и внезапным прерываниям связи.

  3. Производительность:

    • Оценка времени отклика API и времени обработки запросов.

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

  4. Безопасность:

    • Проверка на уязвимости, такие как SQL инъекции, XSS, CSRF, и разглашение данных.

    • Проверка аутентификации, авторизации, и защиты данных.

  5. Совместимость:

    • Проверка того, что API правильно работает с различными версиями операционных систем, устройствами и другими API.
  6. Масштабируемость:

    • Проверка способности API поддерживать растущее количество запросов и объем данных без потери производительности.
  7. Интероперабельность:

    • Тестирование взаимодействия API с другими системами и компонентами, для которых предназначено API.
  8. Удобство использования:

    • Проверка наличия и актуальности документации для разработчиков, использующих API.
  9. Регрессионное тестирование:

    • Проверка, что новые изменения в API не влияют отрицательно на существующие функции.

Для тестирования API обычно используются специализированные инструменты, такие как Postman, SoapUI, JMeter, а также автоматизированные скрипты на языках программирования, поддерживающих отправку HTTP-запросов и обработку ответов.


Как расшифровывается CRUD?

CRUD — это аббревиатура, которая обозначает четыре базовые операции, используемые при взаимодействии с данными в базах данных или других хранилищах информации. Вот расшифровка CRUD:

  • C reate: Создание новой записи.

  • R ead: Чтение или извлечение существующих данных.

  • U pdate: Обновление существующей записи.

  • D elete: Удаление существующей записи.

Эти операции формируют основу для большинства систем, работающих с данными, и часто используются в API для обеспечения полного управления данными.


Чем отличается GET от POST?

GET и POST — это два основных метода HTTP, используемых для отправки данных на сервер. Вот их ключевые отличия:

  1. Назначение:

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

    • POST используется для отправки данных на сервер, например, при создании или обновлении записей.

  2. Безопасность и данные:

    • GET передает данные в URL (через строку запроса), что делает его менее безопасным, так как данные могут быть сохранены в журналах сервера или истории браузера.

    • POST обычно передаёт данные в теле запроса. Метод сам по себе не обеспечивает конфиденциальность: для защиты при передаче нужен HTTPS, а доступ и журналирование контролируются отдельно.

  3. Ограничения на данные:

    • GET имеет ограничения на длину URL, что ограничивает количество данных, которые можно передать.

    • Максимальный размер тела POST зависит от ограничений клиента, прокси и сервера.

  4. Кэширование и история:

    • GET может быть закэширован браузером и сохранен в истории, что удобно для повторных запросов, но может представлять проблемы с конфиденциальностью.

    • Ответ POST может кешироваться при явно заданных условиях, хотя поддержка такого кеширования ограничена. Выбор метода определяется семантикой операции, а не предположением об отсутствии истории.

  5. Идемпотентность:

    • GET является идемпотентным, что означает, что многократное повторение запросов будет иметь тот же эффект, что и однократное выполнение.

    • POST не идемпотентен, так как каждое повторение запроса может привести к дополнительным изменениям данных.

В общем, выбор между GET и POST зависит от задачи: GET используется для запросов данных, а POST — для передачи или изменения данных на сервере.


Какие отличия между XML и JSON?

XML и JSON — это два популярных формата данных, используемых для обмена информацией между системами. Вот их основные отличия:

  1. Синтаксис:

    • XML (Extensible Markup Language):

      • Использует теги для обозначения элементов данных.

      • Поддерживает атрибуты для хранения информации.

      • Более сложная и громоздкая структура.

      • Пример:

        <person>
          <name>John</name>
          <age>30</age>
        </person>
    • JSON (JavaScript Object Notation):

      • Использует пары “ключ-значение”.

      • Поддерживает массивы и вложенные объекты.

      • Более простой и читаемый формат.

      • Пример:

        {
          "name": "John",
          "age": 30
        }
  2. Читаемость и простота:

    • JSON:

      • Легче для чтения и написания человеком.

      • Простой синтаксис делает его менее подверженным ошибкам.

    • XML:

      • Более сложный синтаксис.

      • Теги и атрибуты могут затруднять восприятие данных.

  3. Поддержка типов данных:

    • JSON:

      • Поддерживает основные типы данных: строки, числа, массивы, объекты (словари), логические значения (true/false), и null.
    • XML:

      • Все данные представлены в виде строк, требуются дополнительные усилия для преобразования типов.
  4. Размер данных:

    • JSON:

      • Обычно занимает меньше места по сравнению с XML из-за отсутствия избыточных тегов.
    • XML:

      • Более громоздкий из-за обилия тегов и атрибутов.
  5. Схемы и валидация:

    • XML:

      • Поддерживает схемы (DTD, XSD) для строгой валидации структуры и содержимого документа.
    • JSON:

      • JSON Schema формально задаёт ограничения структуры и значений JSON. Для совместимости указывают диалект схемы и проверяют поддержку используемых ключевых слов валидатором.
  6. Использование и совместимость:

    • JSON:

      • Широко используется в веб-приложениях и API из-за своей простоты и легкости интеграции с JavaScript.
    • XML:

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

Какие знаете форматы передачи данных?

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

  1. JSON (JavaScript Object Notation):

    • Легковесный текстовый формат, удобный для чтения и написания человеком.

    • Часто используется в веб-приложениях и API.

    • Пример:

      {
        "name": "John",
        "age": 30
      }
  2. XML (Extensible Markup Language):

    • Текстовый формат с тегами, используемый для представления сложных структур данных.

    • Поддерживает атрибуты и строгую валидацию с помощью схем.

    • Пример:

      <person>
        <name>John</name>
        <age>30</age>
      </person>
  3. YAML (YAML Ain’t Markup Language):

    • Человеко-читаемый формат сериализации данных, часто используется в конфигурационных файлах.

    • Поддерживает вложенные структуры и имеет простой синтаксис.

    • Пример:

      person:
        name: John
        age: 30
  4. CSV (Comma-Separated Values):

    • Простой текстовый формат, где данные разделяются запятыми.

    • Часто используется для табличных данных и обмена данными между различными системами.

    • Пример:

      name,age
      John,30
  5. Protobuf (Protocol Buffers):

    • Двоичный формат сериализации данных, разработанный Google.

    • Высокая эффективность и компактность по сравнению с текстовыми форматами.

    • Требует определения схемы (протофайл).

  6. Avro:

    • Двоичный формат сериализации данных, разработанный Apache.

    • Хорошо подходит для использования с большими объемами данных и распределенными системами.

    • Требует схемы для сериализации и десериализации.

  7. MessagePack:

    • Двоичный формат, предназначенный для компактного представления данных.

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

    • Быстро и эффективно обрабатывается.

  8. BSON (Binary JSON):

    • Двоичный формат, используемый в MongoDB.

    • Поддерживает встроенные типы данных, такие как даты и байтовые массивы.

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


Как происходит шифрование?

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

  1. Оригинальный текст (plaintext):

    • Исходная, незащищённая информация, которая нуждается в защите.
  2. Алгоритм шифрования:

    • Математическая формула, которая используется для преобразования оригинального текста в зашифрованный текст (ciphertext).
  3. Ключ шифрования:

    • Набор символов, который используется алгоритмом шифрования для изменения данных. Ключ может быть секретным (симметричное шифрование) или открытым/секретным парным ключом (асимметричное шифрование).
  4. Зашифрованный текст (ciphertext):

    • Результат шифрования, который выглядит как случайная последовательность символов и не может быть прочитан без ключа.

Основные типы шифрования:

  1. Симметричное шифрование:

    • Использует один и тот же ключ для шифрования и расшифровки данных.

    • Быстрое и эффективное для обработки больших объемов данных.

    • Примеры: AES (Advanced Encryption Standard), DES (Data Encryption Standard).

    • Пример:

      Plaintext: "Hello"
      Key: "secretkey"
      Ciphertext: "A1B2C3"
  2. Асимметричное шифрование:

    • Использует два различных, но математически связанных ключа: открытый ключ для шифрования и закрытый ключ для расшифровки.

    • Открытый ключ можно распространять, но нужно проверять его принадлежность получателю. Асимметричное шифрование не является автоматически более безопасным: безопасность зависит от схемы, параметров и управления ключами.

    • Примеры: RSA (Rivest-Shamir-Adleman), ECC (Elliptic Curve Cryptography).

    • Пример:

      Plaintext: "Hello"
      Public Key: "publickey"
      Ciphertext: "Z1X2Y3"

Процесс шифрования:

  1. Выбор алгоритма и ключа:

    • Выбор подходящего алгоритма шифрования и генерация ключа(ей).
  2. Шифрование:

    • Применение алгоритма шифрования с использованием ключа к оригинальному тексту для получения зашифрованного текста.
  3. Передача или хранение:

    • Зашифрованный текст передаётся или хранится в защищенном виде.
  4. Расшифровка:

    • Получатель применяет алгоритм расшифровки с использованием соответствующего ключа для преобразования зашифрованного текста обратно в оригинальный текст.

Какие бывают виды баз данных?

Базы данных бывают разных типов, каждый из которых предназначен для определенных сценариев использования и имеет свои особенности. Вот основные виды баз данных:

  1. Реляционные базы данных (RDBMS):

    • Основаны на таблицах, в которых данные хранятся в строках и столбцах.

    • Используют SQL (Structured Query Language) для управления и запроса данных.

    • Примеры: MySQL, PostgreSQL, Oracle, Microsoft SQL Server.

  2. Документо-ориентированные базы данных:

    • Хранят данные в виде документов (обычно JSON или BSON).

    • Подходят для работы с неструктурированными и полуструктурированными данными.

    • Примеры: MongoDB, CouchDB.

  3. Ключ-значение базы данных:

    • Хранят данные как пары “ключ-значение”.

    • Оптимальны для простых запросов, быстрой записи и чтения данных.

    • Примеры: Redis, Amazon DynamoDB, Riak.

  4. Графовые базы данных:

    • Используются для хранения и обработки данных, представленных в виде графов (узлы и ребра).

    • Подходят для работы с социальными сетями, рекомендациями и сетевыми анализами.

    • Примеры: Neo4j, Amazon Neptune, OrientDB.

  5. Колонко-ориентированные базы данных:

    • Хранят данные столбцами вместо строк, что позволяет эффективно обрабатывать аналитические запросы.

    • Используются в системах аналитики и больших данных.

    • Примеры аналитических колоночных СУБД: ClickHouse и Amazon Redshift. Cassandra, HBase и Bigtable относятся к семейству wide-column, которое следует отличать от колоночного хранения для аналитики.

  6. Базы данных временных рядов:

    • Оптимизированы для хранения и обработки временных рядов данных.

    • Подходят для мониторинга, IoT, финансовых данных.

    • Примеры: InfluxDB, TimescaleDB, Prometheus.

  7. Объектно-ориентированные базы данных:

    • Хранят данные в виде объектов, как в объектно-ориентированном программировании.

    • Подходят для приложений, использующих объектные модели.

    • Примеры: ObjectDB, db4o.

  8. Базы данных на основе графиков (графовые):

    • Специализированы для хранения данных в виде графов, что позволяет эффективно работать с взаимосвязанными данными.

    • Примеры: Neo4j, Amazon Neptune.

  9. NoSQL базы данных:

    • Включают в себя все базы данных, которые не соответствуют модели RDBMS.

    • Подходят для приложений, требующих высокой производительности, масштабируемости и гибкости.

    • Включают документо-ориентированные, ключ-значение, графовые и колонко-ориентированные базы данных.

  10. Многофункциональные базы данных (Multi-model):

    • Поддерживают несколько моделей данных в одном движке базы данных.

    • Примеры: ArangoDB, OrientDB, MarkLogic.

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

Эта страница была полезной?