feat(common): add URLSearchParams to request body (#37852)
URLSearch params are by default supported in the browser but are not supported by angular/http package added support for URLSearchParams Fixes #36317 PR Close #37852
This commit is contained in:
parent
e1c5cea2e7
commit
4bc3cf216d
@ -68,6 +68,15 @@ function isFormData(value: any): value is FormData {
|
|||||||
return typeof FormData !== 'undefined' && value instanceof FormData;
|
return typeof FormData !== 'undefined' && value instanceof FormData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Safely assert whether the given value is a URLSearchParams instance.
|
||||||
|
*
|
||||||
|
* In some execution environments URLSearchParams is not defined.
|
||||||
|
*/
|
||||||
|
function isUrlSearchParams(value: any): value is URLSearchParams {
|
||||||
|
return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An outgoing HTTP request with an optional typed body.
|
* An outgoing HTTP request with an optional typed body.
|
||||||
*
|
*
|
||||||
@ -273,7 +282,7 @@ export class HttpRequest<T> {
|
|||||||
// Check whether the body is already in a serialized form. If so,
|
// Check whether the body is already in a serialized form. If so,
|
||||||
// it can just be returned directly.
|
// it can just be returned directly.
|
||||||
if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||
|
if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||
|
||||||
typeof this.body === 'string') {
|
isUrlSearchParams(this.body) || typeof this.body === 'string') {
|
||||||
return this.body;
|
return this.body;
|
||||||
}
|
}
|
||||||
// Check whether the body is an instance of HttpUrlEncodedParams.
|
// Check whether the body is an instance of HttpUrlEncodedParams.
|
||||||
|
@ -143,6 +143,10 @@ const TEST_STRING = `I'm a body!`;
|
|||||||
const body = new ArrayBuffer(4);
|
const body = new ArrayBuffer(4);
|
||||||
expect(baseReq.clone({body}).serializeBody()).toBe(body);
|
expect(baseReq.clone({body}).serializeBody()).toBe(body);
|
||||||
});
|
});
|
||||||
|
it('passes URLSearchParams through', () => {
|
||||||
|
const body = new URLSearchParams('foo=1&bar=2');
|
||||||
|
expect(baseReq.clone({body}).serializeBody()).toBe(body);
|
||||||
|
});
|
||||||
it('passes strings through', () => {
|
it('passes strings through', () => {
|
||||||
const body = 'hello world';
|
const body = 'hello world';
|
||||||
expect(baseReq.clone({body}).serializeBody()).toBe(body);
|
expect(baseReq.clone({body}).serializeBody()).toBe(body);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user