Spring Boot перенаправляет на другой URL

В моем весеннем проекте загрузки я хотел сделать перенаправление с http://localhost:8080 на http://localhost:8080/birdspotting. Это код домашнего контроллера:

@RestController
public class HomeController {

    @GetMapping("/")
    public String showHomePage() {
        return "redirect:/birdspotting";
    }
}

Результатом перехода на http://localhost:8080 является вывод redirect:/birdspotting.

используйте @Controller вместо @RestController.

M. Deinum 21.12.2020 11:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
1
4 443
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны создать другую конечную точку, например:

    @GetMapping("/")
    public String showHomePage() {
        return "redirect:/birdspotting";
    }

    @GetMapping("/birdspotting")
    public String birdspottingPage() {
        return "birdspotting";
    }

Ожидается, что в ваших шаблонах есть birdspotting.html.

Ответ принят как подходящий

В основном RestController = Controller + RequestBody

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

Поэтому используйте @Controller вместо @RestController, чтобы решить эту проблему.

Обновлять:

Если вы хотите использовать оба в одном контроллере, используйте @Controller на уровне класса, а затем везде, где вы хотите вернуть ответ на вызов API, поместите @ResponseBody в метод, и везде, где вы хотите вернуть страницу веб-браузера, не ставьте @ResponseBody.

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

Iñigo Bereciartua 23.12.2020 01:03

Обновлен ответ ... дайте мне знать для дальнейшего разъяснения.

Alien 23.12.2020 04:13

Другие вопросы по теме