From d788577fc2a6e1540740936a39fc9efb22794259 Mon Sep 17 00:00:00 2001 From: Filip Weidemann Date: Wed, 27 Sep 2023 16:13:03 +0200 Subject: [PATCH] docs: add examples for index.ts files on server routes (#23390) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sébastien Chopin Co-authored-by: Sébastien Chopin --- .../2.guide/2.directory-structure/1.server.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/2.guide/2.directory-structure/1.server.md b/docs/2.guide/2.directory-structure/1.server.md index 52545df79d..dd394d4a05 100644 --- a/docs/2.guide/2.directory-structure/1.server.md +++ b/docs/2.guide/2.directory-structure/1.server.md @@ -180,6 +180,38 @@ Given the example above, fetching `/test` with: - **POST** method: Returns `Test post handler` - Any other method: Returns 405 error +You can also use `index.[method].ts` inside a directory for structuring your code differently. + +**Example:** + +```ts [server/api/foo/index.ts] +export default defineEventHandler((event) => => { + // handle the `api/foo` endpoint +}) +``` + +This is useful to create API namespaces. + +**Example:** + +```ts [server/api/foo/index.get.ts] +export default defineEventHandler((event) => => { + // handle GET requests for the `api/foo` endpoint +}) +``` + +```ts [server/api/foo/index.post.ts] +export default defineEventHandler((event) => => { + // handle POST requests for the `api/foo` endpoint +}) +``` + +```ts [server/api/foo/bar.get.ts] +export default defineEventHandler((event) => => { + // handle GET requests for the `api/foo/bar` endpoint +}) +``` + ### Catch-all Route Catch-all routes are helpful for fallback route handling. For example, creating a file named `~/server/api/foo/[...].ts` will register a catch-all route for all requests that do not match any route handler, such as `/api/foo/bar/baz`.