angular2——前后端交互

来源:互联网 发布:数控车床编程自学视频 编辑:程序博客网 时间:2024/06/03 19:42

    前后端交互由于是在两个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请求。



原创粉丝点击