У меня есть микросервис, разработанный с использованием версии Весенняя загрузка 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
Пожалуйста, помогите мне в этом отношении.




Вы можете добавить RedirectViewController следующим образом:
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/", "/api/swagger-ui.html");
}
}
чем, возможно, вам следует проверить свою конфигурацию, в пустом приложении это будет работать.
Вы можете использовать контроллер для пути по умолчанию
@RequestMapping("/")
public String index(Model model) {
return "redirect: /api/swagger-ui.html";
}
взгляните сюда, надеюсь, вы найдете решение docs.spring.io/spring-data/rest/docs/current/reference/html/…
@debadatta-mishra, вам нужно либо удалить свой server.servlet.context-path=/api, либо нажать localhost:8080/api, чтобы это перенаправление сработало. Однако, исходя из вашего вопроса, похоже, что вам В самом деле не нужен этот набор свойств server.servlet.context-path, потому что тогда ваш веб-сервис Только доступен из /api/, а не просто /
@Bwvolleyball, я уже пробовал эти варианты, ничего не помогло.
Ваш контроллер должен выглядеть следующим образом:
@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 в браузере? Это перенаправляет на страницу чванства? Это не работает для меня. Мы можем обработать страницу ошибки каким-то образом.
Если вы посмотрите в файле application.properties, у меня есть этот параметр # ****** WebServer ******* server.servlet.context-path=/ server.port=3007, поэтому вместо 8080, если вы используете localhost: 3007, он будет работать. Вы можете изменить эти свойства в соответствии с вашими потребностями.
Привет, Амит, если вы укажете server.servlet.context-path=/api в application.properties, это не сработает. Думайте, что API — это имя микросервиса, о котором клиент не знает. Клиент просто вводит localhost:8080/, он должен перенаправить на URL-адрес, который я упомянул.
Я уже пробовал этот вариант, я также упомянул в посте. Это не работает.