Skip to content

Commit 0979cac

Browse files
tobiasdiezpi0
andauthored
feat: addsendNoContent utility to create a 204 response (#250)
* feat: add sendEmpty helper method to create a response with an empty payload * fix linter * small updates * update readme Co-authored-by: Pooya Parsa <pooya@pi0.io>
1 parent 4e52381 commit 0979cac

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ H3 has concept of compasable utilities that accept `event` (from `eventHandler((
148148
- `createError({ statusCode, statusMessage, data? })`
149149
- `sendProxy(event, { target, headers?, fetchOptions?, fetch?, sendStream? })`
150150
- `proxyRequest(event, { target, headers?, fetchOptions?, fetch?, sendStream? })`
151+
- `sendNoContent(event, code = 204)`
151152
- `setResponseStatus(event, status)`
152153
- `getResponseStatus(event)`
153154
- `getResponseStatusText(event)`

src/utils/response.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,22 @@ export function send(event: H3Event, data?: any, type?: string): Promise<void> {
1919
});
2020
}
2121

22+
/**
23+
* Respond with an empty payload.<br>
24+
* Note that calling this function will close the connection and no other data can be sent to the client afterwards.
25+
*
26+
* @param event H3 event
27+
* @param code status code to be send. By default, it is `204 No Content`.
28+
*/
29+
export function sendNoContent(event: H3Event, code = 204) {
30+
event.node.res.statusCode = code;
31+
// 204 responses MUST NOT have a Content-Length header field (https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2)
32+
if (event.node.res.statusCode === 204) {
33+
event.node.res.removeHeader("content-length");
34+
}
35+
event.node.res.end();
36+
}
37+
2238
export function setResponseStatus(
2339
event: H3Event,
2440
code: number,

0 commit comments

Comments
 (0)