diff --git a/app/__test__/api/DataApi.spec.ts b/app/__test__/api/DataApi.spec.ts index 4fee5d9..706a59d 100644 --- a/app/__test__/api/DataApi.spec.ts +++ b/app/__test__/api/DataApi.spec.ts @@ -5,9 +5,9 @@ describe("DataApi", () => { it("should switch to post for long url reads", async () => { const api = new DataApi(); - const get = api.readMany("a".repeat(100), { select: ["id", "name"] }); + const get = api.readMany("a".repeat(300), { select: ["id", "name"] }); expect(get.request.method).toBe("GET"); - expect(new URL(get.request.url).pathname).toBe(`/api/data/${"a".repeat(100)}`); + expect(new URL(get.request.url).pathname).toBe(`/api/data/${"a".repeat(300)}`); const post = api.readMany("a".repeat(1000), { select: ["id", "name"] }); expect(post.request.method).toBe("POST"); diff --git a/app/src/data/api/DataApi.ts b/app/src/data/api/DataApi.ts index 64eb9af..e444092 100644 --- a/app/src/data/api/DataApi.ts +++ b/app/src/data/api/DataApi.ts @@ -33,13 +33,13 @@ export class DataApi extends ModuleApi { type T = Pick, "meta" | "data">; const input = query ?? this.options.defaultQuery; - const exceeds = JSON.stringify([entity, input]).length > this.options.queryLengthLimit; + const req = this.get([entity as any], input); - if (exceeds) { - return this.post([entity as any, "query"], input); + if (req.request.url.length <= this.options.queryLengthLimit) { + return req; } - return this.get([entity as any], input); + return this.post([entity as any, "query"], input); } readManyByReference<