我有一个跨域页面,从那里我将获得加载Angular UI所需的参数。
对我来说,我的想法是打电话给spring boot休息端点,并通过响应重定向到角度页面。
带有@PathVariable参数的spring boot休息端点,它将查询数据库并获取响应,一旦响应准备就绪,必须将其重定向到带有响应的角度路由。
我已经使用RedirectView进行重定向,但是我无法掌握Angular端的参数。只是想知道在Spring Boot中传递数据并在Angular端拦截数据的最佳方法是什么。
答案 0 :(得分:1)
优良作法是先调用角度页面,然后使用路由解析器从其余API获取数据。
但是在您的情况下,您可以从Spring Boot控制器重定向到Angular应用
return "redirect:" + yourDomain/param1/param2
并在有角度的应用网址中路由解析器,例如
url: "/endUrl/:param1/:param2"
从状态参数中读取控制器中的参数
答案 1 :(得分:0)
好的,我可以通过结合使用Spring Boot Rest Endpoint和Angular Route Resolver来实现。
@GetMapping(value = "/list/{param1}/{param2}")
public RedirectView redirectToHomePage(final RedirectAttributes attributes, @PathVariable final String param1,
@PathVariable final String param2)
{
return new RedirectView("/showlist/{param1}/{param2}", true);
}
在角度一侧
@Injectable()
export class ShowlistResolver implements Resolve<any> {
private data: UserData
constructor(private router: Router, private userService: UserService) {
this.userData = new UserData();
}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {
console.log('In Router')
this.userData.userId = route.params['id']
this.userData.userRole = route.params['role'];
this.userService.setUserData(this.userData);
this.router.navigate(['/showAll/list', {outlets: {details: ['showDetails']}}]);
}