Создание RESTful Web-сервиса Spring

156
19 октября 2018, 18:40

друзья! Изучаю Spring, создал restful web-service на Spring и разбираю в данный момент приложение, но не пойму где находится: {"id":1,"content":"Hello, World!"} - JSON строка, где она находится в проекте? Объясните пожалуйста! Вот ссылка на проект: http://spring-projects.ru/guides/rest-service/#scratch .У меня точь-в-точь, всё работает, но не пойму где находится JSON строка, заранее спасибо!

Answer 1

Нигде она не находится, она создаётся Jackson-mapperом из экземляра Greeting, который вы возвращаете из контроллера.

Вот же код:

@RestController
public class GreetingController {
    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();
    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value="name", required=false, defaultValue="World") String name) {
        return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
    }
}

Вы отправляете GET-запрос, который допускает один параметр - name. Если этот параметр не передается, то по умолчанию он равен строке World@RequestParam всё это указано). counter - просто переменная-счётчик. Соответственно, если вы при запуске отправляете пустой GET, то у вас вызовется конструктор new Greeting(1, "Hello, World!") и контроллер вернет этот объект. Далее, чтобы преобразовать объект в тело ответа используется Json-mapper, по умолчанию в спринге это Jackson. Собственно, по вашей ссылке описано всё то, что я тут написал.

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

READ ALSO
Ошибка при загрузке web-приложения java на tomcat

Ошибка при загрузке web-приложения java на tomcat

Изучаю spring, перевожу web приложение java на springПри загрузке выскакивает ошибка: One or more listeners failed to start

165
AWS размер каталога (папки)

AWS размер каталога (папки)

мне интересно, как взять размер конкретной папки в amazonClient ? Я знаю, что все внутри Амазона - это обьектыНо ведь как-то же можно взять размер...

136
Не работает Seter в массив на Java

Не работает Seter в массив на Java

Не получается понять причину, почему не работает сетерВыставил значение в сетере - а результат инициализации всё равно 0

153