我需要使用自定义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请求?
答案 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上打开一个问题