Skip to content

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 portul 3000 folosind @hono/node-server (preîncărcat, ascuns, read-only).
  • src/app.ts — fișierul în care creezi instanța Hono ș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.

typescript
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 ​

Vitest

Recomandări speciale și detalii de implementare ​

  • Hono este construit pe standardele web Fetch API: handler-ele primesc un Context și trebuie să returneze un Response (sau un Promise<Response>). Un handler care apelează c.json(...) fără a-l returna va trimite un răspuns gol.
  • Folosește helper-ul de Context potrivit pentru tipul corpului (body): c.text(...) pentru text simplu, c.json(...) pentru JSON (setează automat Content-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(): ​

typescript
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 ​

Provocări write-tests ​

Acest șablon acceptă provocări write-tests. Soluția de referință este deja scrisă, iar tu scrii testele: acestea trebuie să treacă pe soluția de referință și să prindă fiecare variantă cu bug-uri ascunsă. Test îți rulează testele doar pe soluția de referință, iar Verify tests (Verifică testele) și Submit (Trimite) le rulează și pe variantele cu bug-uri ascunse. Citește Rezolvarea unei provocări write-tests pentru întregul flux.

  • Runner de teste: Vitest + app.request()
  • Soluția de referință exportă instanța Hono din src/app.ts. app.request(path, init?) returnează un Response standard fără să pornească un server.
  • Citește corpul cu await response.json() sau await response.text() și verifică response.status pentru cererile care trebuie respinse.

Un exemplu complet găsești în Exemple de write-tests după șablon.

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:

typescript
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 ​

  1. Identifică zona cu probleme: Decide dacă problema se află într-un handler de rută, într-un middleware sau în conectarea app.

  2. Introdu instrucțiuni console.log(): Adaugă apeluri de logare înainte și după codul suspect. Toate logurile Hono merg în terminalul serverului.

  3. Verifică rezultatele testelor tale (Results Output)

  4. 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.

  5. 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 return la apelul c.json(...) / c.text(...) — handler-ele trebuie să returneze un Response (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ște c.json() pentru obiecte, astfel încât header-ul Content-Type să fie setat corect.
  • Importarea din hono/node — pentru Node.js, instalează @hono/node-server și folosește import { serve } from '@hono/node-server'. Seed-ul face deja acest lucru.