Контакты

Россия 196084 , Санкт-Петербург, ул. Заозерная, дом №8, корпус 2, Литера А, офис 212

Мы работаем по будням с 10.00 до 19.00 +7 (495) 215-53-16 +7 (812) 748-20-96 info@notissimus.com
Социальные сети

API расшифровывается как интерфейс прикладного программирования. Он служит шлюзом для доступа приложений к некоторым ресурсам из других приложений. Преимущество использования API заключается в предоставлении доступа сторонним приложениям, чтобы они не могли получить доступ ко всем данным вашего приложения. Они могут получить доступ только к тем данным, которые вы раскрываете через свой API. Приложение или пользователь, который хочет получить доступ к данным, называется клиентом, а приложение, которое обслуживает данные, – сервером. Сегодня API широко используются в любой архитектуре программного обеспечения. Если вы претендуете на должность front-end-, back-end-, full-stack- или сетевого инженера, то вам будут задавать много вопросов, касающихся API. Учитывая это, давайте рассмотрим некоторые из наиболее часто задаваемых на собеседованиях вопросов о REST API.

Содержание скрыть

Что такое REST?

Ответ: REST – это архитектурный дизайн, который определяет некоторые ограничения на работу API. API, которые следуют принципам REST, известны как RESTful API. REST расшифровывается как Representational State Transfer. Это не протокол или стандарт, а архитектура, которая может быть использована для реализации API различными способами. Она предоставляет разработчикам высокую гибкость и свободу, поэтому широко используется для разработки API. Вот некоторые принципы архитектуры REST:

  • Разделение клиента и сервера: В RESTful API клиент не должен влиять на сервер никаким другим образом, кроме как запрашивая данные через URI (Uniform Resource Identifier). Точно так же сервер не должен каким-либо образом изменять содержимое клиента.
  • Безгражданство: Когда выполняются два отдельных запроса, они не знают друг о друге. Другими словами, запросы не имеют состояния и не поддерживают его. Если запрос выполнен, он просто завершается. Каждый запрос изолирован от других запросов.
  • Многоуровневая архитектура: Клиент или сервер не знают, куда направляется запрос – непосредственно к источнику или к приложению-посреднику. Их интересует только ответ на запрос.
  • Кэширование: данные или ответы могут кэшироваться как на стороне клиента, так и на стороне сервера для повышения производительности и масштабируемости. Если к определенному ресурсу часто поступают запросы, то ответ на этот запрос можно кэшировать и использовать при необходимости.

Каковы основные характеристики REST?

Ответ: Ключевыми характеристиками или особенностями REST являются:

  • Гибкость: Вы можете переехать с одного сервера на другой, и это ничего не изменит, потому что API будет отправлять тот же ответ на конкретный запрос. Кроме того, вы можете добавить столько конечных точек, сколько захотите, для разных типов данных.
  • Масштабируемость: Кэширование повышает масштабируемость за счет сохранения ответов для последующего использования. Оно снижает нагрузку на сервер, а также уменьшает задержки.
  • Авторизация: С помощью заголовка авторизации вы можете указать учетные данные, которые сервер может использовать для авторизации запроса.
  • Нестационарность: Это самая важная особенность REST, поскольку она не позволяет запросам знать, что происходит с другими запросами. Запросы изолированы и завершаются, как только они выполнены.

Что такое ресурсы в архитектуре REST?

Ответ: Ресурсы – это сущности, над которыми выполняются различные операции, такие как получение, обновление или удаление. Они являются основными строительными блоками архитектуры REST. Например, если вы рассматриваете интернет-магазин электронной коммерции, то товары, пользователи, а также метаданные считаются ресурсами, поскольку с ними можно работать. Ресурсы могут быть переданы другому приложению через API.

Укажите некоторые преимущества и недостатки REST API.

Ответ: Преимущества REST API заключаются в следующем:

  • Это просто осуществить.
  • С ресурсами можно легко справиться.
  • Он масштабируется благодаря архитектуре клиент-сервер.
  • Поддерживает несколько типов носителей для передачи данных, таких как XML и JSON.

Недостатки:

  • Вы не можете поддерживать состояние между запросами.
  • Истинный источник происхождения ресурса не может быть известен из-за многоуровневой архитектуры.
  • Не подходит для сложных запросов или запросов.

Определите шаблон REST.

Ответ: REST-шаблон – это утилита или клиент, с помощью которого вы можете получить доступ к REST API во фреймворке Spring. По сути, он скрывает шаблонный код, который необходимо написать, чтобы запросить ресурс у REST API.

Что такое RESTful?

Ответ: RESTful API или сервисы – это интерфейсы, реализующие архитектурный стиль REST(Representational State Transfer) и работающие по таким протоколам, как HTTP.

Что такое RESTful Web Services?

Ответ: Веб-сервисы RESTful созданы для наилучшей работы в Сети. Representational State Transfer (REST) – это архитектурный стиль, который определяет ограничения, такие как унифицированный интерфейс, многоуровневая архитектура и отсутствие статичности, если они применяются к веб-сервису, то вызывают желаемые свойства, такие как производительность и масштабируемость, которые позволяют сервисам лучше всего работать в Сети.

Как тестировать RESTful веб-сервисы?

Ответ: Чтобы протестировать RESTful веб-сервис, вы можете использовать REST-клиент, например Postman или Thunder Client, и запросить веб-сервис, который вы хотите протестировать. Затем, когда вы получите ответ, поймите его; это ключевая часть. Если вы хотите протестировать сложный API с большим количеством конечных точек, вам придется разделить тестирование на модульное тестирование, интеграционное тестирование, тестирование производительности и сквозное тестирование.

Укажите некоторые особенности RESTful Web Services.

Ответ: Некоторые из ключевых особенностей RESTful веб-сервисов:

  • Поддержка нескольких типов медиафайлов, таких как JSON и XML.
  • Масштабируемость
  • Изоляция клиента и сервера
  • Гибкость

Определите классы корневых ресурсов RESTful.

Ответ: Корневые классы ресурсов – это “простые старые объекты Java” (POJO), которые либо аннотированы @Path, либо имеют хотя бы один метод, аннотированный @Path или обозначением метода запроса, таким как @GET@POST@PUT или @DELETE.

Что такое URI?

Ответ: URI расшифровывается как Uniform Resource Identifier. Это последовательность символов, используемая для определения местоположения или идентификации ресурсов API или сервиса. Он использует имя или местоположение ресурса для его идентификации, но не полагается на определенный метод или технику.

Что такое безграмотность в REST?

Ответ: Statelessness – это ограничение, применяемое к API, при котором любые два запроса не могут знать, что происходит друг с другом. Другими словами, состояние запросов не поддерживается. Если запрос выполнен, он просто завершается после получения ответа.

Что такое JAX-RS?

Ответ: JAX-RS – это Java API, который позволяет разрабатывать приложения на Java, использующие архитектуру REST. Этот API упрощает разработку REST-приложений на Java.

Что такое ключевые аннотации в API JAX-RS?

Ответ: Аннотации в JAX-RS используются разработчиками для украшения Java-классов с целью определения ресурсов и методов, которые могут быть выполнены над этими ресурсами. К ключевым аннотациям API JAX-RS относятся:

  • @GET: Используется для выполнения GET-запросов в HTTP.
  • @POST: Используется для выполнения POST-запросов в HTTP.
  • @Path: Ссылается на относительный путь к классу Java.
  • @QueryParam: относится к параметрам запроса URI или URL.

Каковы некоторые ключевые особенности APIJAX-RS?

Ответ: Особенностями JAX-RS являются:

  • Кэширование на стороне клиента
  • Кэширование на стороне сервера
  • Настройка строки запроса
  • Аннотации времени выполнения

Как можно настроить приложения JAX-RS?

Ответ: Приложение JAX-RS состоит как минимум из одного класса ресурсов, упакованного в WAR-файл. Базовый URI, с которого ресурсы приложения отвечают на запросы, может быть задан одним из двух способов:

  • Использование аннотации @ApplicationPath в подклассе javax.ws.rs.core.Application, упакованном в WAR
  • Использование тега servlet-mapping в дескрипторе развертывания web.xml WAR

Что такое JAX-WS и JAX-RS?

Ответ: JAX-WS – это Jakarta XML Web Services API, используемый для разработки API с помощью Simple Object Access Protocol (SOAP) – протокола обмена сообщениями на основе XML. С другой стороны, JAX-RS – это Java API, используемый для создания веб-сервисов с использованием архитектуры REST.

Что такое коды состояния HTTP?

Ответ: Коды состояния – это не что иное, как способ передачи статуса ответа, отправленного сервером клиенту. Они присутствуют в заголовках ответа, отправляемых сервером. С помощью кодов состояния клиент может определить, был ли запрос неудачным или выполненным, или что-то не так с ответом. Вот некоторые распространенные коды состояния HTTP: –

  • 200 – обозначает ключевое слово “OK”. Оно означает, что запрос был выполнен, и ответ пришел в порядке.
  • 404 – расшифровывается как “Не найдено”. Это означает, что ресурс отсутствует на сервере или конечная точка не существует.
  • 500 – расшифровывается как “Внутренняя ошибка сервера”. Обычно это происходит, когда сервер не может сгенерировать правильный ответ, или возникает ошибка, которая не является явной.
  • 503 – расшифровывается как “Сервис недоступен”. Это означает, что в данный момент сервер не может обрабатывать запросы, возможно, потому что он мертв или не работает из-за перегрузки запросами. Это также может происходить, когда сервер находится на техническом обслуживании.

Что такое методы HTTP?

Ответ: Методы HTTP используются для выполнения определенного типа действий над конкретным ресурсом API. Например, если вы хотите получить список фильмов из API коллекции фильмов, то вы можете использовать метод GET, предоставляемый HTTP. Если вы хотите обновить данные, вы можете использовать метод POST, предоставляемый HTTP. Часто используемые методы HTTP следующие:

  • GET: Запросы, использующие GET, должны получать только данные.
  • POST: Обновляет ресурс, отправляя на сервер только что обновленный ресурс.
  • DELETE: удаляет указанный ресурс.
  • PATCH: Частично изменяет ресурс.

Как работает базовая аутентификация HTTP?

Ответ: Аутентификация – это процесс проверки подлинности клиента для обеспечения безопасности данных. В HTTP аутентификация работает через заголовок авторизации, который отправляется клиентом. Заголовок авторизации состоит из имени пользователя/идентификатора и пароля клиента, которые затем проверяются сервером, и доступ предоставляется. Важно отметить, что при использовании HTTP-аутентификации канал, по которому передаются учетные данные, должен быть зашифрован и защищен. Вы можете защитить канал с помощью уровня SSL, который интегрирован в HTTPS. Поэтому при работе с учетными данными рекомендуется использовать HTTPS, а не простой HTTP.

Каковы основные компоненты HTTP-запроса?

Ответ: HTTP-запрос состоит из следующих компонентов:

  • Строка запроса: Это первая строка в любом запросе, которая состоит из метода HTTP, пути или конечной точки и номера версии HTTP.
  • Заголовки: HTTP-заголовки используются для предоставления метаданных о запросе.
  • Тело (необязательно): Этот компонент присутствует только для некоторых методов запроса. Он не требуется для GET-запросов, но необходим для POST-запросов. Это фактическое сообщение запроса.

Каковы основные компоненты HTTP-ответов?

Ответ: HTTP-ответ состоит из следующих компонентов:

  • Статус: Он обозначает код состояния HTTP, который отправляется сервером.
  • Заголовки: Как и запросы, ответы также имеют соответствующие заголовки, которые предоставляют полезную информацию об ответе.
  • Сообщение: Это фактические данные, которые сервер отправляет клиенту для запроса определенного ресурса.

В чем разница между REST и AJAX?

Ответ: AJAX – это клиент, с помощью которого вы можете получить доступ к RESTful API. Он используется для отправки асинхронных запросов с помощью JavaScript. REST, или Representational State Transfer, – это архитектура, которая может быть реализована для создания RESTful API. Короче говоря, для отправки HTTP-запросов можно использовать AJAX, который служит в качестве клиента, но если вы хотите реализовать RESTful API, то вам необходимо использовать архитектуру REST.

В чем разница между SOAP и REST?

ОтветRepresentational State Transfer, или REST, – это архитектура с минимальными ограничениями для создания API. SOAP, или Simple Object Access Protocol, – это протокол с жесткими требованиями для реализации API. REST более гибкий и простой в использовании, чем SOAP. В SOAP используется обмен сообщениями на основе XML, в то время как в REST можно использовать множество типов передачи данных, таких как JSON, XML и т. д. По сравнению с SOAP, REST более легкий и быстрый. Веб-сервисы SOAP имеют встроенную защиту, что является одним из преимуществ использования SOAP перед REST, но дополнительные функции также делают их сложными и тяжелыми в использовании.

В чем разница между PUT и POST?

Ответ: POST – это метод HTTP-запроса, который отправляет некоторые данные на сервер. Если вы сделаете несколько POST-запросов для определенного ресурса, то это может привести к побочным эффектам для ваших данных. Например, если вы хотите добавить статью в коллекцию, то при выполнении нескольких POST-запросов в коллекцию будет добавлено несколько статей, что приведет к появлению лишних статей. PUT – это метод HTTP-запроса, который отправляет данные на сервер для определенного ресурса, но обновляет их только один раз. Если вы отправите несколько PUT-запросов для определенного ресурса, никаких побочных эффектов не возникнет, а данные будут добавлены только один раз. При PUT, если ресурс не существует, создается новый, а если он существует, то обновляется существующий. PUT является идемпотентным, а POST – нет.

Что такое полезная нагрузка?

Ответ: Полезная нагрузка в REST API – это просто тело запроса, отправленного клиентом на сервер. Это данные, которые вы хотите отправить на сервер и получить ответ.

Какой максимальный размер полезной нагрузки может быть отправлен в почтовых методах?

Ответ: В самом протоколе HTTP нет ограничения по умолчанию. Лимит может зависеть от максимального лимита клиента или сервера, в зависимости от того, какой из них является минимальным.

Какие лучшие практики необходимо соблюдать при создании URI?

Ответ: Некоторые из ключевых моментов, которые необходимо учитывать при разработке URI, таковы:

  • Избегайте использования расширений файлов
  • Будьте последовательны во всех URI
  • Разделите URI на домены и поддомены для различных наборов ресурсов
  • Для разделения слов в предложениях, встроенных в URI, следует использовать дефис или знак подчеркивания.
  • Вы должны использовать прямую косую черту для обозначения иерархии ресурсов
  • Кодируйте URI с помощью правильной кодировки
  • Постарайтесь сделать URI человекочитаемым

Что такое идемпотентные методы?

Ответ: Идемпотентные HTTP-методы оказывают одинаковое воздействие на сервер, несмотря на отправку нескольких одинаковых запросов. Например, если вы отправите несколько одинаковых запросов DELETE для определенного ресурса, ресурс не будет изменяться при каждом запросе; он будет обновляться так, как будто был отправлен только один запрос. Некоторые из идемпотентных методов включают в себя:

  • PUT
  • DELETE
  • GET
  • HEAD
  • OPTIONS

Что такое Postman?

Ответ: Postman – это инструмент для разработки, модификации и тестирования API. Он предоставляет множество возможностей для быстрого создания и тестирования API без необходимости установки клиента.

Что такое заголовки Cache-Control?

Ответ: Заголовок Cache-Control состоит из инструкций или директив для настройки кэширования в браузерах и на серверах. Он указывает браузеру или серверу, что кэшировать и как долго это должно кэшироваться, прежде чем будет запрошено через сетевой запрос. Заголовок Cache-Control включает в себя следующие директивы:-.

  • max-age
  • no-cache
  • private
  • public
  • no-store
  • immutable

Определение обмена сообщениями в RESTful Web Services.

Ответ: Обмен сообщениями в веб-сервисах RESTful означает, что клиент отправляет HTTP-запрос на сервер, на который сервер отвечает HTTP-ответом. Это взаимодействие между клиентом и сервером называется обменом сообщениями.

В чем разница между монолитной, SOA и микросервисной архитектурой?

Ответ: В монолитной архитектуре все управляется в одном месте. Клиентская часть, сервер, а также база данных управляются из одного места. Поэтому она и называется монолитной, ведь слово “монолит” означает единый блок или камень. SOA расшифровывается как Service-Oriented Architecture. В этой архитектуре различные аспекты приложения управляются различными сервисами, которые также являются программным обеспечением. Таким образом, это комбинация нескольких сервисных программных модулей. Интеграция является ключевой частью этой архитектуры. Архитектура микросервисов похожа на SOA, но, в отличие от SOA, в ней есть несколько автономных программ, которые общаются друг с другом с помощью API. В отличие от монолитной архитектуры, здесь все автономно и, в некоторой степени, независимо.

Как работает микросервисная архитектура?

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

Что такое CRUD?

Ответ: CRUD расшифровывается как Create, Read, Update, Delete. Это операции, которые могут быть выполнены над определенным ресурсом. API, поддерживающий все эти операции, называется CRUD API. Это самые основные операции, которые могут быть выполнены API над ресурсом.

Что такое кэширование?

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

В чем польза @RequestMapping?

Ответ: Это аннотация во фреймворке Spring, которая используется для сопоставления веб-запросов с определенными классами обработчиков и/или методами обработчиков.

Что делает @PathVariable?

Ответ: Аннотация @PathVariable в spring framework используется для извлечения значения переменных шаблона и присвоения их значения переменной метода.

Определите HttpMessageConverter.

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

Какие инструменты необходимы для тестирования веб-интерфейса?

Ответ: Ниже перечислены некоторые инструменты, которые могут помочь вам в тестировании API:

  • Postman
  • Rest Assured
  • Rest Sharp
  • Katalon
  • ReadyAPI
  • Apigee

Заключительные слова

В наши дни API стали чрезвычайно популярны благодаря появлению Интернета. Еще одна причина популярности REST API заключается в том, что их легко разрабатывать и просто использовать. Если вы готовитесь к собеседованию, рассмотрите приведенные выше вопросы о REST API, которые могут быть заданы на собеседовании.