From: Stephen Smith Date: Wed, 5 Oct 2022 19:22:13 +0000 (-0400) Subject: 18979: Switch common resource list request to use urlencoded post body for large... X-Git-Tag: 2.5.0~34^2~2 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/0095829c16c9756ca03a278687a89fafe2870f86 18979: Switch common resource list request to use urlencoded post body for large requests Arvados-DCO-1.1-Signed-off-by: Stephen Smith --- diff --git a/src/services/common-service/common-resource-service.test.ts b/src/services/common-service/common-resource-service.test.ts index b94756ae..7f47f20e 100644 --- a/src/services/common-service/common-resource-service.test.ts +++ b/src/services/common-service/common-resource-service.test.ts @@ -136,8 +136,9 @@ describe("CommonResourceService", () => { await commonResourceService.list({ filters: tooBig }); expect(axiosMock.history.get.length).toBe(0); expect(axiosMock.history.post.length).toBe(1); - expect(axiosMock.history.post[0].data.get('filters')).toBe(`[${tooBig}]`); - expect(axiosMock.history.post[0].params._method).toBe('GET'); + const postParams = new URLSearchParams(axiosMock.history.post[0].data); + expect(postParams.get('filters')).toBe(`[${tooBig}]`); + expect(postParams.get('_method')).toBe('GET'); }); it("#list using GET when query string is not too big", async () => { diff --git a/src/services/common-service/common-service.ts b/src/services/common-service/common-service.ts index f16a2024..bdae87ab 100644 --- a/src/services/common-service/common-service.ts +++ b/src/services/common-service/common-service.ts @@ -156,7 +156,9 @@ export class CommonService { ); } else { // Using the POST special case to avoid URI length 414 errors. - const formData = new FormData(); + // We must use urlencoded post body since api doesn't support form data + // const formData = new FormData(); + const formData = new URLSearchParams(); formData.append("_method", "GET"); Object.keys(params).forEach(key => { if (params[key] !== undefined) { @@ -164,11 +166,7 @@ export class CommonService { } }); return CommonService.defaultResponse( - this.serverApi.post(`/${this.resourceType}`, formData, { - params: { - _method: 'GET' - } - }), + this.serverApi.post(`/${this.resourceType}`, formData, {}), this.actions, showErrors );