@Pathvariable к classDTO - PullRequest
       4

@Pathvariable к classDTO

0 голосов
/ 07 февраля 2020

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

Я знаю, что могу использовать для этого запросы POST, но в этом случае мне нужен запрос GET.

Я хочу это @GetMapping ("/ get / {classDTO}") publi c Строка getMethod (@PathVariable classDTO classDTO)

Вместо этого @GetMapping ("/ get") publi c String getMethod (@PathVariable String id, @PathVariable String random, @PathVariable String переменная, @PathVariable String привет)

1 Ответ

0 голосов
/ 07 февраля 2020

Передача нескольких значений (например, объекта) непосредственно в URI очень подвержена ошибкам. Тем не менее, есть возможность сделать это. Хотя я бы не стал предлагать это в реальных приложениях. Кроме того, убедитесь, что вы не передаете конфиденциальные данные.

Предположим, у вас есть класс "Book":

public class Book {

    private String name;
    private String author;
    private int pages;

    public Book() {
    }
    // getters and setters are ommited for briefty, make sure you have them.
}

Ваш контроллер будет выглядеть так:

@RestController
public class LibraryController {

    @GetMapping("/library")
    public Book getBook(@RequestParam String book) throws JsonProcessingException {
        return new ObjectMapper().readValue(book, Book.class);
    }
}

Происходит следующее: мы вручную пытаемся отобразить переданную строку в ожидаемый объект.

Тогда наш запрос на получение будет следующим:

http://localhost:8080/library?book={"name": "title", "author": "someone", "pages": 400}

Дополнительные ресурсы:

При поиске ответа по inte rnet я нашел две статьи, которые могут вас заинтересовать.

Пример того, как сделать запрос GET с картой или список

Пример передачи объекта в GET-запросе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...