Как сделать URL-адрес по умолчанию для просмотра в браузере при весенней загрузке?

У меня есть микросервис, разработанный с использованием версии Весенняя загрузка 2.1.3, а также я использовал SpringFox версии 2.9.2 для документации Swagger. Каждый раз, когда я распространяю или развертываю стороннему или любому другому лицу, я всегда должен упоминать URL-адрес swagger, чтобы пользователь мог пройти через конечные точки REST. Мой вопрос заключается в том, как сделать перенаправленный URL-адрес по умолчанию в случае весенней загрузки, чтобы он должен перенаправлять на swagger-ui.html автоматически. Это означает, что если пользователь вводит http://локальный:8080 в браузере, браузер должен автоматически перенаправить на URL-адрес, т.е. http://локальный:8080/api/swagger-ui.html. Я хочу знать, требуется ли для этого какая-либо конфигурация?

Прежде чем перейти к stackoverflow, я просмотрел следующие ссылки и попытался, но ничего не сработало, как ожидалось.

Java Spring Boot: как сопоставить корень моего приложения («/») с index.html?

Изменение страницы приветствия по умолчанию для приложения spring-boot, развернутого как война

Я также пробовал разные способы, но всегда получаю 404 или страницу ошибки Whitelabel. Я хочу знать, есть ли способ, если страница с ошибкой whitelabel автоматически перенаправляется на страницу swagger, т.е. http://локальный:8080/api/swagger-ui.html.

Я также добавил ниже в application.properties.

server.servlet.context-path=/api

Пожалуйста, помогите мне в этом отношении.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
9 927
3

Ответы 3

Вы можете добавить RedirectViewController следующим образом:

@Configuration
public class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController("/", "/api/swagger-ui.html");
    }

}

Я уже пробовал этот вариант, я также упомянул в посте. Это не работает.

Sambit 26.03.2019 19:15

чем, возможно, вам следует проверить свою конфигурацию, в пустом приложении это будет работать.

Johannes Erchen 28.03.2019 06:45

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

@RequestMapping("/")
public String index(Model model) {            
    return "redirect: /api/swagger-ui.html";

}

взгляните сюда, надеюсь, вы найдете решение docs.spring.io/spring-data/rest/docs/current/reference/html/‌​…

Al-Amin 26.03.2019 20:40

@debadatta-mishra, вам нужно либо удалить свой server.servlet.context-path=/api, либо нажать localhost:8080/api, чтобы это перенаправление сработало. Однако, исходя из вашего вопроса, похоже, что вам В самом деле не нужен этот набор свойств server.servlet.context-path, потому что тогда ваш веб-сервис Только доступен из /api/, а не просто /

Bwvolleyball 26.03.2019 21:20

@Bwvolleyball, я уже пробовал эти варианты, ничего не помогло.

Sambit 26.03.2019 21:28

Ваш контроллер должен выглядеть следующим образом:

@RestController
public class DefaultController implements ErrorController {

    @Override
    public String getErrorPath() {
        return "/error";
    }

    @RequestMapping("/error")
    public void handleErrorWithRedirect(HttpServletResponse response) throws IOException {
        response.sendRedirect("/swagger-ui.html");
    }

    @RequestMapping(value = "/")
    public void redirect(HttpServletResponse response) throws IOException {
        response.sendRedirect("/swagger-ui.html");
    }

}

Я также собрал для вас рабочую модель в моем весеннем проекте гитхаб.
Для страницы по умолчанию/индекса или страницы с ошибкой она всегда будет перенаправляться на swagger-ui.html.
Дайте мне знать, если у вас остались вопросы.

Привет, Амит, я проверил твой код, он не работает в соответствии с моим вопросом. Можете ли вы попробовать локальный: 8080 в браузере? Это перенаправляет на страницу чванства? Это не работает для меня. Мы можем обработать страницу ошибки каким-то образом.

Sambit 27.03.2019 18:37

Если вы посмотрите в файле application.properties, у меня есть этот параметр # ****** WebServer ******* server.servlet.context-path=/ server.port=3007, поэтому вместо 8080, если вы используете localhost: 3007, он будет работать. Вы можете изменить эти свойства в соответствии с вашими потребностями.

Amith Kumar 27.03.2019 18:41

Привет, Амит, если вы укажете server.servlet.context-path=/api в application.properties, это не сработает. Думайте, что API — это имя микросервиса, о котором клиент не знает. Клиент просто вводит localhost:8080/, он должен перенаправить на URL-адрес, который я упомянул.

Sambit 27.03.2019 19:47

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