kwhitley/itty-router-extras

`json()` does not always return valid JSON content

Opened this issue · 1 comments

cdrx commented

I think json() does not return a the correct Response type when passed a string.

This works:

router.get("/test", (request) => {
  return json({
     hello: world
  });
});

as it correctly returns {"hello": "world"} with a valid JSON content type header.

But this:

router.get("/test", (request) => {
  return json("hello world");
});

returns hello world (without quotations) and a text/plain content type header. If you try to parse that JSON it will fail. It should return "hello world", with quotations, which will parse correctly.

I think this is because createResponseType(...) only calls JSON.stringify() if the supplied parameter is an object.

Great catch and investigation! I'm in the middle of rewriting extras (in TS) into itty-router core and will add a test case to cover this!