H
Hono4d ago
Wazowski

relative pathname in Request not working on POST request

Using the pathname in a GET request everything works fine. Code:
test("GET: all car brands", async () => {
const res = await app.request("/api/brand");
const body = await res.json();
// [{ id: 0, name: "BMW" }, { id: 1, name: "Audi" }]
});
test("GET: all car brands", async () => {
const res = await app.request("/api/brand");
const body = await res.json();
// [{ id: 0, name: "BMW" }, { id: 1, name: "Audi" }]
});
But using a POST request I get the error: TypeError: Failed to construct 'Request': Invalid URL "/api/brand".
test("POST: create new car brand", async () => {
...
...
const req = new Request("/api/brand", {
method: "POST",
body: formData,
});

await app.request(req);
...
...

/*
41 | const req = new Request("/api/brand", {
^
TypeError: Failed to construct 'Request': Invalid URL "/api/brand"
code: "ERR_INVALID_URL"
*/
});
test("POST: create new car brand", async () => {
...
...
const req = new Request("/api/brand", {
method: "POST",
body: formData,
});

await app.request(req);
...
...

/*
41 | const req = new Request("/api/brand", {
^
TypeError: Failed to construct 'Request': Invalid URL "/api/brand"
code: "ERR_INVALID_URL"
*/
});
If I use the absolute server url (like http://localhost:3000/api/brand) it just works fine.
1 Reply
ambergristle
ambergristle4d ago
using the test client might be easier than constructing the reqs yourself: https://hono.dev/docs/helpers/testing but my best guess would be that app.request is doing some relative path resolution under the hood that Request doesn't https://developer.mozilla.org/en-US/docs/Web/API/URL

Did you find this page helpful?