Hono
Ar trebui să îți construiești aplicația prin exportarea unei instanțe Hono din src/app.ts și înregistrarea rutelor pe aceasta. Seed-ul expune o singură rută GET / care returnează "Hello, World!" — extinde-o adăugând mai multe rute, middleware și grupuri de rute.
Fișierul de intrare
Fișierele soluției sunt organizate sub src/:
src/main.ts— scriptul de bootstrap care importăappși pornește serverul Node pe portul3000folosind@hono/node-server(preîncărcat, ascuns, read-only).src/app.ts— fișierul în care creezi instanțaHonoși înregistrezi rutele (fișier de soluție editabil).
Separarea definiției app de bootstrap-ul serverului îți permite să reutilizezi aceeași app în teste via app.request() fără a o atașa la un port real.
Configurarea serverului pentru API Tester
Serverul este pornit de src/main.ts (serve({ fetch: app.fetch, port: 3000, hostname: '0.0.0.0' })), deci rulează atunci când folosești tab-ul API Tester. API Tester trimite cereri HTTP reale către aplicația ta Hono și randează răspunsul.
import { serve } from '@hono/node-server';
import { app } from './app';
serve({ fetch: app.fetch, port: 3000, hostname: '0.0.0.0' });Versiune
Rulează pe Node.js v22.0.0 cu Hono 4.
Limbi suportate
TypeScript
Framework de testare
Recomandări speciale și detalii de implementare
- Hono este construit pe standardele web Fetch API: handler-ele primesc un
Contextși trebuie să returneze unResponse(sau unPromise<Response>). Un handler care apeleazăc.json(...)fără a-l returna va trimite un răspuns gol. - Folosește helper-ul de
Contextpotrivit pentru tipul corpului (body):c.text(...)pentru text simplu,c.json(...)pentru JSON (setează automatContent-Type),c.html(...)pentru HTML. - Testele folosesc helper-ul integrat
app.request()al Hono, care trimite o cerere prin aplicație fără a porni un server — perfect pentru teste unitare rapide și izolate.
Exemplu cu Vitest + app.request():
import { describe, it, expect } from 'vitest';
import { app } from './src/app';
describe('GET /', () => {
it("returns 'Hello, World!' with status 200", async () => {
const response = await app.request('/');
expect(response.status).toBe(200);
expect(await response.text()).toBe('Hello, World!');
});
});Biblioteci incluse
Cum se face depanarea
Hono este un framework de backend construit pe standardele web Fetch API — handler-ele tale primesc un Context și returnează un Response. Există trei modalități principale de a inspecta comportamentul la rulare:
1. Loguri din interiorul handler-elor de rute
Folosește direct console.log. Output-ul apare în terminalul serverului de dezvoltare:
app.get('/items', (c) => {
console.log('GET /items called');
return c.json([]);
});2. API Tester
Folosește tab-ul API Tester din panoul din dreapta pentru a trimite cereri HTTP reale (GET / POST / PUT / PATCH / DELETE) către serverul tău Hono aflat în rulare. Alege o metodă, scrie o cale, adaugă headere/parametri/corp (body) și apasă pe Trimite (Send).
3. Pași pentru depanare folosind console.log
Identifică zona cu probleme: Decide dacă problema se află într-un handler de rută, într-un middleware sau în conectarea
app.Introdu instrucțiuni
console.log(): Adaugă apeluri de logare înainte și după codul suspect. Toate logurile Hono merg în terminalul serverului.Verifică rezultatele testelor tale (Results Output)
Folosește pictograma de depanare (Debug) din zona de previzualizare (Preview): Dă clic pe pictograma de depanare din zona Preview pentru a verifica output-ul terminalului.
Analizează rezultatele: Compară logurile cu răspunsurile din API Tester pentru a depista rutele lipsă, codurile de stare greșite sau erorile netratate.
Greșeli frecvente
- Omiterea utilizării
returnla apelulc.json(...)/c.text(...)— handler-ele trebuie să returneze unResponse(sau o promisiune a acestuia). Un handler care apeleazăc.json(...)fără a-l returna trimite un răspuns gol. - Utilizarea
c.body()pentru JSON — acesta este helper-ul pentru corpul brut (raw body). Foloseștec.json()pentru obiecte, astfel încât header-ulContent-Typesă fie setat corect. - Importarea din
hono/node— pentru Node.js, instalează@hono/node-serverși foloseșteimport { serve } from '@hono/node-server'. Seed-ul face deja acest lucru.