Skip to content

Latest commit

 

History

History
139 lines (104 loc) · 9.65 KB

HTTP.MD

File metadata and controls

139 lines (104 loc) · 9.65 KB

1. Чем отличается HTTP 1.1 от HTTP 2.0?

Производительность Одной из ключевых особенностей HTTP 2.0 является мультиплексирование, которое позволяет одновременную передачу нескольких запросов и ответов по одному соединению. Это снижает задержки и увеличивает пропускную способность.
Бинарный протокол В отличие от текстового протокола HTTP/1.1, HTTP/2 использует бинарный формат для передачи данных. Это улучшает эффективность передачи и уменьшает объем данных, которые необходимо передавать по сети.
Шифрование В HTTP 2.0 использование шифрования (TLS) является обязательным, в то время как в HTTP 1.1 это не является стандартным требованием.
Заголовки В HTTP 2.0 введены новые методы сжатия заголовков, что уменьшает объем передаваемых данных. Это помогает улучшить производительность и снизить задержки.
Приоритеты В HTTP 2.0 введено понятие приоритетов для запросов. Это позволяет серверу определить, какие запросы являются наиболее важными, и обрабатывать их в первую очередь. В HTTP 1.1 запросы обрабатываются в порядке поступления.
Server Push HTTP 2.0 поддерживает функцию Server Push, которая позволяет серверу принудительно отправлять ресурсы на клиентскую сторону, не дожидаясь запроса от клиента. Это позволяет улучшить производительность и снизить задержки.

Однако важно отметить, что многие из этих улучшений, внедренных в HTTP 2.0, работают на уровне протокола и требуют соответствующей поддержки как на стороне сервера, так и на стороне клиента.

2. Какие есть типы сообщений в протоколе HTTP и что они означают?

  • Информационные (100-105)
  • Успешные (200-226)
  • Перенаправление (300-307)
  • Ошибка клиента (400-499) - неправильная валидация
  • Ошибка сервера (500-510)

3. Что такое REST подход для построения API, на чем он базируется?

REST (Representational State Transfer) - это архитектурный стиль для построения веб-сервисов и API.

  • Клиент-серверная модель: REST разделяет клиентскую и серверную стороны, что позволяет им развиваться независимо друг от друга.

  • Без состояния (Stateless): Каждый запрос от клиента к серверу должен содержать всю необходимую информацию для выполнения этого запроса. Сервер не должен хранить состояние клиента между запросами. Это позволяет обеспечить масштабируемость и надежность системы.

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

  • Единообразный интерфейс: REST определяет набор единообразных методов и форматов данных для обмена информацией между клиентом и сервером. Наиболее распространенными методами являются GET (получение ресурса), POST (создание ресурса), PUT (обновление ресурса), PATCH (обновляет только указанные поля) и DELETE (удаление ресурса). Они оперируют с ресурсами, представленными в формате, таком как JSON или XML.

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

4. POST, GET методы для чего нужны и какое в них отличие.

Методы POST и GET являются двумя основными методами HTTP-запросов.

GET: Используется для получения данных с сервера.

  • Данные запроса передаются в URL в виде параметров (query string) после символа "?". Например: http://example.com/api?param1=value1&param2=value2.
  • Ограничение на объем передаваемых данных (обычно до 2048 символов).
  • GET-запросы могут быть кэшированы браузером.
  • Значения параметров видны в URL, что может повлечь уязвимости безопасности при передаче конфиденциальных данных.

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

  • Данные запроса передаются в теле запроса.
  • Нет ограничений на объем передаваемых данных.
  • POST-запросы не кэшируются браузером.
  • Значения параметров не видны в URL и не сохраняются в истории браузера, что делает их более безопасными для передачи конфиденциальных данных.
  • Запрос можно сделать безопасным, шифруя данные с помощью https

5. Какие коды ответов лучше использовать в приложение и почему.

  • 405 метод не поддерживается (при попытке отправить GET вместо POST)
  • 201 создано
  • 204 empty content
  • 409 Конфликт (повторная отправка тех же данных)

6. Ошибки на валидацию какие отправлять коды?

  • 400 Bad Request
  • 422 Unprocessable Entity сервер понял запрос, но не может обработать его из-за неверных данных
  • 403 Forbidden
  • 429 Too Many Requests

7. Как лучше построить API приведи пример построение запроса?

Использовать REST API - философия построение взаимодействия сервисов между собой. Основные понятия resources, stateless, methods (POST,GET,PUT,PATCH)

  1. Resources
  • Использование существительных во множественном числе без использование на конце update/delete/insert за это будут отвечать методы /articles/:id/comments
  • Версионирование v1/articles/:id/comments
  • Фильтрация, сортировка и лимиты Использовать только существующий endpoint с get параметром v1/articles?title=Nokia&sort=+author,-dateTime&limit=100
  1. Methods CRUD
  • GET - Read
  • PUT - Update (Обновляет все поля в сущности, даже если их не передали)
  • PATCH - Update (Обновит только одно поле)
  • POST - Create
  • DELETE - Delete
  1. HTTP code
  • Клиентские

400 Bad request - для неправильного ввода клиентских данных

403 Forbidden - доступ запрещён

401 Unauthorized - не авторизован

404 Not found - не найден

  1. Request, response
  • Json format

8. Как HTTPS защищает передачу данных?

Использует протокол:

TLS (Transport Layer Security) или его предшественника SSL (Secure Sockets Layer), для шифрования данных между клиентом и сервером.

Назад