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

SOAP и REST

Все темы Systems Analyst

Чем SOAP отличается от REST?

SOAP (Simple Object Access Protocol) и REST (Representational State Transfer) - это два различных подхода к веб-сервисам:

  1. Протокол обмена данными:

    • SOAP: Использует протокол SOAP для обмена структурированными сообщениями (XML) по сети.

    • REST: Основан на принципах HTTP и использует стандартные методы HTTP (GET, POST, PUT, DELETE) для доступа к ресурсам.

  2. Формат сообщений:

    • SOAP: Сообщения SOAP обычно представлены в XML формате и часто содержат метаданные о структуре данных.

    • REST: Возвращает данные в различных форматах, таких как JSON, XML, HTML или текст, в зависимости от запроса клиента.

  3. Управление состоянием (State):

    • SOAP сам по себе не требует сохранения состояния между вызовами. Сессионное поведение может задаваться приложением или дополнительными спецификациями.

    • REST является архитектурным стилем. Ограничение stateless требует, чтобы каждый запрос содержал контекст для обработки; сервер при этом может хранить ресурсы и бизнес-данные.

  4. Простота и гибкость:

    • REST: Считается более простым и гибким в сравнении с SOAP, так как основывается на стандартных HTTP методах и форматах данных.

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


Из чего состоит сообщение в SOAP?

Сообщение в SOAP (Simple Object Access Protocol) состоит из трех основных частей:

  1. Envelope (Оболочка): Определяет структуру XML-документа и обязательно присутствует в каждом SOAP-сообщении. Включает информацию о версии SOAP и пространствах имен.

  2. Header (Заголовок): Опциональная часть, которая содержит метаданные или информацию о маршрутизации и обработке сообщения, такие как аутентификация, транзакционные данные и другие параметры.

  3. Body (Тело): Содержит основное содержимое сообщения, которое передается между отправителем и получателем. Обычно это XML-документ с данными, которые требуется обработать или передать.

SOAP-сообщение часто используется для интеграции между различными системами и является стандартом для обмена структурированными и комплексными данными по сети.


Что содержит HEADER в ответе REST?

В ответе REST, заголовок (HEADER) может содержать различные метаданные и управляющие данные, такие как:

  1. Статус ответа передаётся отдельно от обычных полей заголовков: в строке статуса HTTP/1.1, а в HTTP/2 и HTTP/3 в псевдозаголовке :status.

  2. Кэширование: Заголовки Cache-Control, Expires и ETag могут использоваться для управления кэшированием ответа на клиентской стороне.

  3. Аутентификация: WWW-Authenticate в ответе задаёт запрос аутентификации. Authorization обычно передаётся клиентом в запросе.

  4. Тип содержимого: Заголовок Content-Type указывает на тип возвращаемого контента (например, application/json для JSON или text/xml для XML).

  5. Перенаправление: Location указывает URI, на который следует перейти. Стандартного поля ответа Redirect для этого нет.

  6. Дополнительные данные: Другие заголовки могут содержать различные метаданные, такие как дата и время ответа, сервер и прочее.


Чем отличаются HTTP-статусы 200 OK и 201 Created?

200 OK и 201 Created относятся к успешным HTTP-ответам:

  1. 200 OK:

    • Этот статус указывает, что запрос клиента успешно обработан сервером.

    • Обычно используется для ответа на запросы типа GET, POST, PUT или DELETE.

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

  2. Код состояния 201 (Created):

    • Этот статус указывает, что сервер успешно создал новый ресурс по указанному клиентом запросу.

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

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


Какие методы REST вы знаете?

В архитектуре REST (Representational State Transfer) используются следующие основные методы (или операции), которые описывают типы действий, которые клиенты могут выполнить с ресурсами на сервере:

  1. GET: Получение данных или ресурсов с сервера. Операция не должна изменять состояние сервера.

  2. POST: Создание нового ресурса на сервере. Обычно используется для отправки данных на сервер для последующего сохранения.

  3. PUT: Обновление существующего ресурса на сервере. Полностью заменяет текущее состояние ресурса на новое.

  4. PATCH: Частичное обновление существующего ресурса на сервере. Используется для изменения только части ресурса без его полной замены.

  5. DELETE: Удаление ресурса с сервера. Операция удаляет указанный ресурс.

Эти методы позволяют клиентам взаимодействовать с ресурсами на сервере, изменять и получать данные с учетом REST-принципов, таких как унификация интерфейса и отсутствие состояния на сервере (statelessness).


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

POST и GET - это два основных HTTP метода, используемых в архитектуре REST для взаимодействия с веб-ресурсами. Они имеют следующие различия:

  1. GET:

    • Используется для запроса данных с сервера.

    • Параметры запроса передаются в URL как часть строки запроса (query string).

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

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

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

  2. POST:

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

    • Параметры запроса передаются в теле запроса (request body).

    • Размер тела ограничивается настройками клиента, прокси и сервера; универсального неограниченного объёма нет.

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

    • Тело POST не попадает в адресную строку, но само по себе не защищает данные. HTTPS шифрует при передаче и тело, и URL-путь с query; приложение и сервер всё равно могут их журналировать.


Чем PUT отличается от PATCH?

PUT и PATCH - это HTTP методы, используемые для обновления ресурсов на сервере в архитектуре REST. Они отличаются следующим образом:

  1. PUT:

    • Используется для полного обновления существующего ресурса на сервере.

    • При выполнении запроса PUT клиент отправляет целевой ресурс с полными данными (полное представление ресурса).

    • Если ресурс существует, он заменяется новыми данными, которые клиент передал.

    • Если ресурс не существует, PUT может создать новый ресурс с указанным идентификатором.

  2. PATCH:

    • Используется для частичного обновления существующего ресурса на сервере.

    • При выполнении запроса PATCH клиент отправляет только ту часть данных, которую необходимо изменить (частичное представление ресурса).

    • PATCH применяет изменения к ресурсу, не затрагивая остальные его аспекты.

    • При этом PATCH может использовать операции добавления, замены, удаления частей данных ресурса в соответствии с протоколом JSON Patch или другими спецификациями.


Напишите пример REST-API для книжной библиотеки (напишите методы, эндпоинты и пример JSON).

Пример REST API для книжной библиотеки может включать следующие методы, эндпоинты и примеры JSON:

  1. Получение списка всех книг
    • Метод: GET

    • Эндпоинт: /books
    • Пример JSON ответа:
      [
        {
          "id": 1,
          "title": "1984",
          "author": "George Orwell",
          "genre": "Science Fiction"
        },
        {
          "id": 2,
          "title": "To Kill a Mockingbird",
          "author": "Harper Lee",
          "genre": "Classic"
        }
      ]
  2. Получение информации о конкретной книге по ID
    • Метод: GET

    • Эндпоинт: /books/{id}
    • Пример JSON ответа:
      {
        "id": 1,
        "title": "1984",
        "author": "George Orwell",
        "genre": "Science Fiction",
        "isbn": "978-0451524935",
        "published_year": 1949
      }
  3. Добавление новой книги
    • Метод: POST

    • Эндпоинт: /books
    • Пример JSON запроса:
      {
        "title": "The Great Gatsby",
        "author": "F. Scott Fitzgerald",
        "genre": "Classic",
        "isbn": "978-0743273565",
        "published_year": 1925
      }
    • Пример JSON ответа (новая книга с ID):
      {
        "id": 3,
        "title": "The Great Gatsby",
        "author": "F. Scott Fitzgerald",
        "genre": "Classic",
        "isbn": "978-0743273565",
        "published_year": 1925
      }
  4. Обновление информации о книге
    • Метод: PUT

    • Эндпоинт: /books/{id}
    • Пример JSON запроса:
      {
        "title": "The Great Gatsby",
        "author": "F. Scott Fitzgerald",
        "genre": "Classic",
        "isbn": "978-0743273565",
        "published_year": 1925
      }
  5. Удаление книги
    • Метод: DELETE

    • Эндпоинт: /books/{id}

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