angular2——前后端交互

前端之家收集整理的这篇文章主要介绍了angular2——前后端交互前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前后端交互由于是在两个jvm上运行,所以必须要解决跨域问题。

如果springmvc用的是4.2版本以上的话,那么恭喜你,解决跨域的问题非常的简单。在controller上的方法加上@CrossOrigin注解就可以解决


主要看下前端的代码


  //调用远程地址,获取数据 get方法
  //返回response的json串
  public getData(url: string): Promise<any> {
    return this.http
      .get(url)
      .toPromise()
      .then(response => response.json() as any)
      .catch(this.handleError);

  }

  delete(url: string,obj: any) {
    //  url = `${url}/${obj.id}`;
    url = url + "/" + obj.id;
    return this.http.post(url,JSON.stringify(obj),{ headers: this.headers })
      .toPromise().then(res => res.json() as any)
      .catch(this.handleError);

  }

后端的方法加上注解
 @RequestMapping(value = {"/deleteById/id/{id}"},method = RequestMethod.POST)
    @ResponseBody
    @CrossOrigin

    public ItooResult deleteById(@PathVariable String id,HttpServletResponse response) {
            业务需求代码
}

问题就这样解决了。说下自己在解决过程中遇到的问题

1、修改了后端的解决跨域的代码,依旧没有解决跨域的问题,经过一番探索发现,把idea的服务停止后,仍旧可以访问到服务。于是意识到服务修改了根本没有起作用。于是重启电脑。

所以:每次停止服务时,都测试下,确保服务停止了。然后在启动,确保每次访问都是自己修改好的服务。

2、一点收获,对于非get的复杂请求,浏览器会先发送一个options请求,确保服务是否支持发杂请求,然后会再次发送一个真正你要发送的请求。比如:发送post请求,会先发送options的预请求,先确保服务支持post请求,然后会再发送一个post请求。

原文链接:https://www.f2er.com/angularjs/146628.html

猜你在找的Angularjs相关文章