Skip to content

[backport v1.3.x] fix: return HTTP 400 for empty JSON body#134

Merged
bytaesu merged 1 commit into
v1.3.xfrom
backport-130-to-v1.3.x
Apr 28, 2026
Merged

[backport v1.3.x] fix: return HTTP 400 for empty JSON body#134
bytaesu merged 1 commit into
v1.3.xfrom
backport-130-to-v1.3.x

Conversation

@better-release

Copy link
Copy Markdown

Description

Backport of #130 to v1.3.x.

The `getBody()` function calls `request.json()` unconditionally when the Content-Type header matches `application/json`:

```ts
if (jsonContentTypeRegex.test(normalizedContentType)) return await request.json();
```
When the body is empty or not valid JSON, request.json() throws a native SyntaxError. Since SyntaxError is not an instance of APIError, the router's catch block at router.mjs:84-99 falls through to the generic 500 handler:

console.error(`# SERVER_ERROR: `, error);
return new Response(null, { status: 500, statusText: "Internal Server Error" });
This affects all POST endpoints that don't define a body schema — because without body or disableBody: true, better-call still attempts JSON parsing.

Co-authored-by: Taesu <166604494+bytaesu@users.noreply.github.com>
(cherry picked from commit 3cb8c23)
@pkg-pr-new

pkg-pr-new Bot commented Apr 28, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/better-call@134

commit: cf1b2b6

@bytaesu bytaesu merged commit f1c64e6 into v1.3.x Apr 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants