Routing Berbasis File
Referensi: Deno File-based Routing Tutorial
Routing berbasis file adalah konsep inti Deserve - struktur sistem file Anda menjadi struktur API secara otomatis, mengikuti pola yang sama seperti Next.js tapi untuk API Deno.
Cara Kerja
Deserve memindai direktori routes Anda dan membuat endpoint dari struktur file. Semua ekstensi yang didukung (.ts, .js, .tsx, .jsx, .mjs, .cjs) bekerja dengan cara yang sama:
routes/
├── index.ts → GET /
├── about.mjs → GET /about
├── users.js → GET /users
├── users/[id].ts → GET /users/:id
└── users/[id]/
└── posts/
└── [postId].jsx → GET /users/:id/posts/:postIdAturan Inti
1. Nama File Menjadi Routes
index.ts,index.js,index.mjs→/(root)about.ts,about.js,about.mjs→/aboutusers.ts,users.js,users.cjs→/users
Semua ekstensi yang didukung (.ts, .js, .tsx, .jsx, .mjs, .cjs) bekerja identik.
2. Folder Membuat Nested Routes
users/[id].ts→/users/:idusers/[id]/posts.ts→/users/:id/posts
3. Parameter Dinamis Menggunakan Sintaks [param]
[id].ts→ parameter:id[userId].ts→ parameter:userId[postId].ts→ parameter:postId
4. HTTP Methods Adalah Fungsi yang Diekspor
typescript
import type { Context } from '@neabyte/deserve'
export function GET(ctx: Context): Response {
return ctx.send.json({ users: [] })
}
export async function POST(ctx: Context): Promise<Response> {
const data = await ctx.body()
return ctx.send.json({ message: 'User created', data })
}
// export function [method](ctx: Context): Response {
// ... code here ...
// }5. URL Case-Sensitive
URL bersifat case-sensitive sesuai standar HTTP:
/Users/John≠/users/john/API/v1≠/api/v1
6. Karakter Nama File yang Valid
File dapat berisi aturan spesifik:
a-z,A-Z,0-9- Karakter alfanumerik_- Underscore-- Dash.- Dot~- Tilde+- Tanda plus[]- Bracket untuk parameter dinamis