Spring Boot RestEndpoint重定向到角路由

时间:2018-11-14 22:03:35

标签: spring angular spring-boot

我有一个跨域页面,从那里我将获得加载Angular UI所需的参数。

对我来说,我的想法是打电话给spring boot休息端点,并通过响应重定向到角度页面。

带有@PathVariable参数的spring boot休息端点,它将查询数据库并获取响应,一旦响应准备就绪,必须将其重定向到带有响应的角度路由。

我已经使用RedirectView进行重定向,但是我无法掌握Angular端的参数。只是想知道在Spring Boot中传递数据并在Angular端拦截数据的最佳方法是什么。

2 个答案:

答案 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']}}]);
  }