TL;DR прокрутите вниз, найдите источники ниже и попробуйте их.
Наиболее распространенный веб-сервер со спамом, все маршруты будут перенаправляться на /index.html . Да. Пружинный ботинок также может это сделать. но до сих пор это довольно трудно понять. давай сделаем это.
Насколько сложно это решить? касание приложение.свойства ? нет. написать @Конфигурация ? нет. написать @ControllerAdvice ? нет. Почему бы вам не подумать, что лимонный сок просто-напросто выжимается?
просто напишите класс с @Controller и реализуйте Контроллер ошибок интерфейс. вот и все. вот код!
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
public class SpaErrorController implements ErrorController {
@RequestMapping("/error")
public Object error(HttpServletRequest request, HttpServletResponse response) {
// place your additional code here (such as error logging...)
if (request.getMethod().equalsIgnoreCase(HttpMethod.GET.name())) {
response.setStatus(HttpStatus.OK.value()); // optional.
return "forward:/index.html"; // forward to static SPA html resource.
} else {
return ResponseEntity.notFound().build(); // or your REST 404 blabla...
}
}
@Override
public String getErrorPath() {
return "/error";
}
}
Не думайте о других вещах, просто скомпилируйте и запустите. Вы никогда не увидите страницу с ошибкой белой метки, и ВСЕ маршруты будут перенаправлены на index.html .
Я использую это решение в реальном мире. Да… мм… довольно неплохо.
Но помните, что разделение интерфейсной и серверной части будет лучшим выбором; из-за многократного использования, удобного развертывания, другого хорошего момента, который вы знаете.
Оригинал: “https://dev.to/composite/how-to-run-spa-webapp-with-spring-boot-2-x-5gdo”