Descrizione del progetto
TradottoIl lavoro copre l'intero stack backend di GraphQL: uno schema di tipo-first per le nostre entità chiave, risolutori sopra uno strato PostgreSQL ottimizzato, autenticazione JWT passata attraverso il contesto e autorizzazione a livello di campo in modo che i diversi ruoli vedano solo ciò che dovrebbero. Anche la parte in tempo reale è importante: lo stato degli ordini e le notifiche devono raggiungere i clienti tramite sottoscrizioni WebSocket, non polling costante. Oltre alla correttezza, ci preoccupiamo della sicurezza e del controllo dei costi delle query: limiti di profondità e complessità, oltre a query persistenti per i clienti mobili.
Poiché questo sostituisce un'API live, un percorso di migrazione pulito e una documentazione chiara fanno parte del compito, non un bonus. Raccontaci di un'API GraphQL che hai rilasciato e di come hai risolto problemi di autorizzazione e prestazioni. Ambito dettagliato di seguito.
1. Progettazione dello schema
— Tipo-first: Utente, Prodotto, Ordine, Recensione, Notifica
— Tipi di input, mutazioni
— Scalar personalizzati (Data, JSON, Upload)
— Tipi Enum per i campi di stato
2. Implementazione
— Apollo Server 4 + Express
— DataLoader per prevenire query N+1
— Autenticazione JWT tramite contesto
— Autorizzazione a livello di campo
— Sottoscrizioni tramite WebSocket (stato dell'ordine, notifiche)
3. Prestazioni e qualità
— Limiti di profondità/complessità delle query
— Query persistenti per i clienti mobili
— Ottimizzazione di PostgreSQL (EXPLAIN ANALYZE)
— Test unitari per i risolutori (Jest + Supertest)
— Integrazione con Apollo Studio
4. Documentazione
— Schema documentato (descrizioni di tutti i tipi)
— Raccolta Postman/Insomnia
— Guida alla migrazione da REST