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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
|
@ -273,7 +282,7 @@ export class HttpRequest<T> {
|
|||
// Check whether the body is already in a serialized form. If so,
|
||||
// it can just be returned directly.
|
||||
if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||
|
||||
typeof this.body === 'string') {
|
||||
isUrlSearchParams(this.body) || typeof this.body === 'string') {
|
||||
return this.body;
|
||||
}
|
||||
// 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);
|
||||
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', () => {
|
||||
const body = 'hello world';
|
||||
expect(baseReq.clone({body}).serializeBody()).toBe(body);
|
||||
|
|
Loading…
Reference in New Issue