Главная страница
Навигация по странице:

  • Аннотация @ResponseBody

  • @RequestBody

  • 40. Что такое AJAX/fetch

  • Метод fetch()

  • 41. Чем аннотация RestController отличается от Controller

  • @Controller: эта аннотация

  • @RestController

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


    Скачать 0.73 Mb.
    НазваниеИнструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми
    Дата13.11.2022
    Размер0.73 Mb.
    Формат файлаdocx
    Имя файла2.docx
    ТипИнструкция
    #785689
    страница23 из 26
    1   ...   18   19   20   21   22   23   24   25   26

    39. Что такое responseBody, requestBody, ResponseEntity?


    ResponseEntity представляет собой специальный класс, который представляет http-ответ. Он содержит тело ответа, код состояния, заголовки. Мы можем использовать его для более тонкой настройки http-ответа.

    @GetMapping("/{id}")
    public ResponseEntity getUser(@PathVariable long id, @ModelAttribute("user") User user) {
    return new ResponseEntity<>(userService.getUser(id), HttpStatus.OK);
    }
    ResponseEntity необходим, только если мы хотим кастомизировать ответ. Во всех остальных случаях достаточно использовать. @ResponseEntity необходим, только если мы хотим кастомизировать ответ, добавив к нему статус.

    Если мы хотим использовать ResponseEntity, то просто должны вернуть его из метода, Spring позаботится обо всем остальном.

    Если клиент ждет от нас JSON/XML, мы можем параметризовать ResponseEntity конкретным классом и добавить к ответу заголовки и Http статус.

    Аннотация @ResponseBody дает фреймворку понять, что объект, который вернули метода надо прогнать через HttpMessageConverter, чтобы получить готовое к отправке на клиент представление. В этот момент происходит обратная сериализация сущности в HttpResponse.

    Контроллер использует Jackson message converter для конвертации входящих/исходящих данных. Как правило целевые данные представлены в json или xml.

    @RequestBody используется для возврата и записи объекта прямо в тело HTTP-ответа, в соответствии с заголовком HTTP-запроса.

    HTTP-запрос кроме заголовков и параметров имеет также основную часть - тело запроса. Ее содержимое также может быть распознано как параметр в методе контроллера. Для того, чтобы это произошло, необходимо указать @RequestBody в объявлении этого параметра. Spring автоматически десериализует HttpRequest в тип Java, если указан соответствующий тип.

    40. Что такое AJAX/fetch?


    AJAX (Asynchronous Javascript and XML) – это ассинхронный подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся быстрее и удобнее.

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

    Метод fetch() – это XMLHttpRequest нового поколения. Он предоставляет улучшенный интерфейс для осуществления запросов к серверу: как по части возможностей и контроля над происходящим, так и по синтаксису, так как построен на промисах (объект, представляющий результат успешного или неудачного завершения асинхронной операции).

    41. Чем аннотация RestController отличается от Controller?


    @RestController – это просто сокращенная запись для @Controller + @ResponseBody.

    Но если говорить чуть подробнее, то:

    @Controller: эта аннотация – это всего лишь специализированная версия @Component, и она позволяет автоматически обнаруживать классы контроллеров на основе сканирования classpath.

    @RestController: эта аннотация является специализированной версией @Controller, которая автоматически добавляет @Controller и @ResponseBody аннотации, поэтому нам не нужно добавлять @ResponseBody к нашим методам отображения.

    Основная разница между традиционным Spring MVC контроллером и RESTfull веб-сервис контроллером заключается в способе создания тела HTTP ответа. MVC контроллер опирается на технологию View, а RESTfull веб сервис контроллер возвращает объект, который представляется в HTTP ответе в виде JSON или XML.

    @RestController превращает помеченный класс в Spring- бин. Этот бин для конвертации входящих/исходящих данных использует Jackson message converter.

    @Controller - Возвращает страницу и данные при помощи шаблонизаторов JSP вроде Thymeleaf.

    @RestController - Возвращает данные. Используется с JSON или XML.

    Позволяет применять технологии без перезагрузки веб страниц, на основе JS.

    Для того, чтобы настроить @RestController на возвращение JSON или XML используются Jackson зависимости.

    При отправке данных с фронта в рестконтроллер нужно в заголовке(header) указать тип возвращаемого/отправляемого тела запроса.

    Например, ContentType или accept: "application/json"

    1   ...   18   19   20   21   22   23   24   25   26


    написать администратору сайта