feat(http): add options method to Http (#10540)

Add options method to the Http object, which could be useful when using self-describing RESTful APIs.

This closes #10500, closes #7918
This commit is contained in:
Damien Cassan 2016-08-08 18:15:13 +02:00 committed by Alex Rickabaugh
parent 46bbcefb36
commit 0bd97ecda2
3 changed files with 23 additions and 0 deletions

View File

@ -186,6 +186,15 @@ export class Http {
this._backend,
new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Head, url)));
}
/**
* Performs a request with `options` http method.
*/
options(url: string, options?: RequestOptionsArgs): Observable<Response> {
return httpRequest(
this._backend,
new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Options, url)));
}
}

View File

@ -310,6 +310,19 @@ export function main() {
});
describe('.options()', () => {
it('should perform an options request for given url',
inject([AsyncTestCompleter], (async: AsyncTestCompleter) => {
backend.connections.subscribe((c: MockConnection) => {
expect(c.request.method).toBe(RequestMethod.Options);
backend.resolveAllConnections();
async.done();
});
http.options(url).subscribe((res: Response) => {});
}));
});
describe('searchParams', () => {
it('should append search params to url',
inject([AsyncTestCompleter], (async: AsyncTestCompleter) => {

View File

@ -64,6 +64,7 @@ export declare class Http {
delete(url: string, options?: RequestOptionsArgs): Observable<Response>;
get(url: string, options?: RequestOptionsArgs): Observable<Response>;
head(url: string, options?: RequestOptionsArgs): Observable<Response>;
options(url: string, options?: RequestOptionsArgs): Observable<Response>;
patch(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>;
post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>;
put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response>;