angular 2自定义请求方法

时间:2017-01-26 10:23:21

标签: angular angular2-http

我需要使用自定义HTTP请求方法的API。

在我的情况下,HTTP Request方法是“RELOAD”。

在Angular 2中,我有(https://github.com/angular/angular/blob/master/modules/%40angular/http/src/enums.ts)中可用的请求方法列表:

export enum RequestMethod {
  Get,
  Post,
  Put,
  Delete,
  Options,
  Head,
  Patch
}

如果我做:

return this.http.request(url, {method: "RELOAD"})
      .map(response => response.json())
      .catch(this.handleError);

我有这个错误:

  

ORIGINAL EXCEPTION:无效的请求方法。不支持“RELOAD”方法。

如何使用自定义请求方法发送http请求?

3 个答案:

答案 0 :(得分:1)

你可以像这样扩展http类。

export class CustomHttp extends Http {

  constructor(backend: XHRBackend, options: RequestOptions) {
    super(backend, options);
  }

  get(url: string, options?: RequestOptionsArgs): Observable<Response> {
    //Starts
    return super.get(url, options).map(r => {
      //Completed
      return r;
    }).catch(//error handling);
  }
}

然后在你的服务中使用该类而不是html,我希望它有所帮助 (您可以对请求执行相同操作)

答案 1 :(得分:0)

您可以使用ng2发出通用请求。使用下面的代码

this.objHttp.request("url.svc",{
      method:"POST"
    }).subscribe(data=>{

});

但问题是默认浏览器不支持自定义方法。你能告诉我使用自定义动作方法的用例吗?

答案 2 :(得分:0)

我认为没有办法使用自定义方法。自定义http请求方法符合RFC。 来自https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

  

HTTP / 1.1的常用方法集定义如下。尽管可以扩展此集合,但不能假定其他方法为单独扩展的客户端和服务器共享相同的语义。

在角度2中,无法使用自定义方法,因为RequestMethod对象是&#34;枚举&#34;并且不可扩展。

我想我会在angular 2 github上打开一个问题