mirror of
https://github.com/denoland/deno.git
synced 2025-01-03 12:58:54 -05:00
fix(cli/web): Support URLSearchParam as Body (#6416)
The following used to fail in Deno despite working in the browser: ```javascript new Request('http://localhost/', {method: 'POST', body: new URLSearchParams({hello: 'world'})}).text().then(console.log) ```
This commit is contained in:
parent
49c54c0805
commit
f6a4146973
2 changed files with 13 additions and 1 deletions
|
@ -25,6 +25,8 @@ function validateBodyType(owner: Body, bodySource: BodyInit | null): boolean {
|
||||||
return true;
|
return true;
|
||||||
} else if (bodySource instanceof FormData) {
|
} else if (bodySource instanceof FormData) {
|
||||||
return true;
|
return true;
|
||||||
|
} else if (bodySource instanceof URLSearchParams) {
|
||||||
|
return true;
|
||||||
} else if (!bodySource) {
|
} else if (!bodySource) {
|
||||||
return true; // null body is fine
|
return true; // null body is fine
|
||||||
}
|
}
|
||||||
|
@ -193,7 +195,10 @@ export class Body implements domTypes.Body {
|
||||||
);
|
);
|
||||||
} else if (this._bodySource instanceof ReadableStreamImpl) {
|
} else if (this._bodySource instanceof ReadableStreamImpl) {
|
||||||
return bufferFromStream(this._bodySource.getReader());
|
return bufferFromStream(this._bodySource.getReader());
|
||||||
} else if (this._bodySource instanceof FormData) {
|
} else if (
|
||||||
|
this._bodySource instanceof FormData ||
|
||||||
|
this._bodySource instanceof URLSearchParams
|
||||||
|
) {
|
||||||
const enc = new TextEncoder();
|
const enc = new TextEncoder();
|
||||||
return Promise.resolve(
|
return Promise.resolve(
|
||||||
enc.encode(this._bodySource.toString()).buffer as ArrayBuffer
|
enc.encode(this._bodySource.toString()).buffer as ArrayBuffer
|
||||||
|
|
|
@ -72,3 +72,10 @@ unitTest(
|
||||||
assertEquals(formData.get("field_2")!.toString(), "<Deno>");
|
assertEquals(formData.get("field_2")!.toString(), "<Deno>");
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
unitTest({ perms: {} }, async function bodyURLSearchParams(): Promise<void> {
|
||||||
|
const body = buildBody(new URLSearchParams({ hello: "world" }));
|
||||||
|
|
||||||
|
const text = await body.text();
|
||||||
|
assertEquals(text, "hello=world");
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in a new issue