我正在尝试使用maven为Spring后端开发一个应用程序,使用Maven为前端开发Angular 2。使用Spring Boot和Angular 2进行URL处理的问题
角度2前端位于项目的src/main/resources/static
目录中。
当我在浏览器中输入URL时,一切正常:我可以访问angular 2前端,并且前端可以完美地与其余api进行通信。我的角度2路由工作正常:当我点击前端链接,我去右边的页面和浏览器的网吧显示正确的东西(即http://localhost:8080/documents
)
但问题是,当我试图直接在浏览器中写入相同的URL。春季接管前端,并表示/documents
没有映射。
有没有办法告诉春季启动只“聆听”/api/*
网址和“重定向”所有其他人到前端?
这里是我的春天Controller类:
@RestController
@RequestMapping("/api")
public class MyRestController {
@Autowired
private DocumentsRepository documentRepository;
@CrossOrigin(origins = "*")
@RequestMapping(value = "/documents/list",
method = RequestMethod.GET,
produces = "application/json")
public Iterable<RfDoc> findAllDocuments() {
return documentRepository.findAll();
}
}
这里是主要的应用程序类:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
这里是我的app.route.ts:
import { provideRouter, RouterConfig } from '@angular/router';
import { DocumentComponent } from './doc.component';
const routes: RouterConfig = [
{
path: '',
redirectTo: 'documents',
pathMatch: 'full'
},
{
path: "documents",
component: DocumentComponent
}
];
export const appRouterProviders = [
provideRouter(routes)
];
有一种方法只能听/ api/*。为此,你需要有一个过滤器。 – sparrow
我该怎么做?我对这个东西很新... – Eric