Skip to content

Commit

Permalink
feat(common): add URLSearchParams to request body (#37852)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
ajitsinghkaler authored and alxhub committed May 7, 2021
1 parent e1c5cea commit 4bc3cf2
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
11 changes: 10 additions & 1 deletion packages/common/http/src/request.ts
Expand Up @@ -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.
*
Expand Down Expand Up @@ -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.
Expand Down
4 changes: 4 additions & 0 deletions packages/common/http/test/request_spec.ts
Expand Up @@ -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);
Expand Down

0 comments on commit 4bc3cf2

Please sign in to comment.