我有一个单页角应用与Spring引导。它看起来如下所示:
src
main
java
controller
HomeController
CustomerController
OtherController
webapp
js/angular-files.js
index.html
Spring Boot正确地默认为webapp文件夹,并为index.html文件服务。
我想做的是:
@RequestMapping("/api/other-controller/:id") can write shorthand @RequestMapping("/other-controller/:id")
对于不以/api开头的每个本地REST请求,覆盖并重定向到默认的webapp/index.html。我计划为spring控制器提供任何/API。
更新15/05/2017
让我为其他读者重新表述一下你的问题。(纠正我,如果被误解)
背景
使用Spring Boot并从类路径服务静态资源
要求
所有404
非api请求都应重定向到index.html
。
非API-意味着URL不以/API
开头的请求。
API-404应该像往常一样抛出404
。
向application.properties
添加以下内容
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
添加ControllerAdvice
,如下所示
@ControllerAdvice
public class RedirectOnResourceNotFoundException {
@ExceptionHandler(value = NoHandlerFoundException.class)
public Object handleStaticResourceNotFound(final NoHandlerFoundException ex, HttpServletRequest req, RedirectAttributes redirectAttributes) {
if (req.getRequestURI().startsWith("/api"))
return this.getApiResourceNotFoundBody(ex, req);
else {
redirectAttributes.addFlashAttribute("errorMessage", "My Custom error message");
return "redirect:/index.html";
}
}
private ResponseEntity<String> getApiResourceNotFoundBody(NoHandlerFoundException ex, HttpServletRequest req) {
return new ResponseEntity<>("Not Found !!", HttpStatus.NOT_FOUND);
}
}
您可以根据需要自定义错误消息。
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api")
public abstract class BaseController {}
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FirstTestController extends BaseController {
@RequestMapping(path = "/something")
public String sayHello() {
return "Hello World !!";
}
}
// CODE REMOVED. Check Edit History If you want.
我的Spring启动应用程序在从Okta服务器重定向后给我一个错误为404。请给我一些帮助来解决这个问题。我的配置如下。 这是我的Okta服务器重定向 https://dev-40483106.okta.com/oauth2/default/v1/authorize?响应类型=代码 这是我收到404错误的重定向URI http://localhost:8082/mms-sso/auth?code=
我已经创建了一个spring boot后端和一个angular前端,现在我想使用sprint boot在8080上运行,其主页显示索引。html(来自angular)。 我已经使用ng build--prod命令在angular中创建了dist文件夹,并将其复制到(src/main/resources/static)文件夹中。在此处输入图像描述 除此之外,我读了很多关于这个的stackoverfl
重定向到 不执行。谁面临过类似的问题?
或者,如果有其他方法来完成这项任务? AuthenticationController.Java
我需要编写一个使用Spring Boot控制器和多部分文件的上传角度模块。但是当我上传文件时,我有一个错误 我尝试了很多更改,但每次都出现这个错误。这是我的angular file sender数据服务 这是我的控制器 它无法使用或不使用多部分解析器。你能帮我上传这个文件吗?
问题内容: 任何人都有一个简单的指令来自动显示Bootstrap模式吗?在Bootstrap 3中,他们取消了自动显示模态的功能,因此我不能使用有角度的ng-if show块。任何帮助都会很棒。 问题答案: 已针对angular 1.2和Bootstrap 3.1.1更新: http : //embed.plnkr.co/WJBp7A6M3RB1MLERDXSS/ 我扩展了Ender2050的答案