Zod peut implémenter le routage de l'API de type sécurisé dans next.js. Tout d'abord, définissez le schéma de la demande et de la réponse, puis vérifiez et injectez le type via la fonction d'ordre supérieur, et utilisez enfin cette encapsulation dans le routage pour garantir que l'entrée et la sortie sont vérifiées. Le schéma peut également être réutilisé pour générer des types frontaux pour assurer la cohérence. 1. Définir le corps de la demande de vérification du schéma, les paramètres de requête et la structure de réponse; 2. Créez la fonction de retenue de remise pour analyser et taper automatiquement la demande; 3. Appliquer cette fonction dans le routage de l'API pour obtenir la sécurité de type complet; 4. Vérifiez éventuellement le corps de réponse et encapsulez la fonction de l'outil; 5. Le front-end importe directement les types générés par ZOD pour s'assurer que les types frontaux et back-end sont cohérents, améliorant ainsi l'expérience de développement et la qualité du projet.
Next.js facilite la création d'applications complètes, mais par défaut, le routage de l'API est de type faible - vous pouvez facilement faire des erreurs dans l'analyse du corps, les paramètres de requête ou les formats de réponse. Combiné avec ZOD, vous pouvez implémenter le routage API entièrement sécurisé, avec des vérifications de compilation et des invites automatiques des demandes aux réponses.

Voici un moyen pratique de mettre en ?uvre le routage de l'API de type type à l'aide de zod dans next.js.
? schéma qui définit les demandes et les réponses
Le noyau de ZOD est de définir des structures de données vérifiables. Pour le routage des API, nous devons généralement vérifier:

- Paramètres de requête (
query
) - Demander le corps (
body
) -
response
// lib / schémas / userschema.ts import {z} de 'zod'; Export const CreateUserschema = z.object ({ corps: z.object ({ Nom: Z.String (). Min (1), Email: z.string (). e-mail (), }), requête: z.object ({ apikey: z.string (). min (1), }).facultatif(), }); Type d'exportation createUserInput = z.infer <typeof CreateUsSchema>;
Ce schéma définit la structure requise par Post /api/users
.
? ? Créer un processeur API à sécurité type
Nous encapsulons une fonction d'ordre supérieur, analyse automatiquement et tapent req.body
et req.query
.

// lib / api / handler.ts import {NextAPirequest, NextAPiRESPONSE} de ?Next?; import {zodschema, zoDerror} de 'zod'; Type Handler <T> = ( req: nextAPirequest & {body: t ['body']; requête: t ['query']}, Res: NextAPiRESPONSE ) => Promesse <nud> | vide; Fonction d'exportation Wattvalidation <T étend {Body ?: Any; requête ?: Any}> ( schéma: zodschema <t>, Handler: Handler <T> ) { return async (req: nextapirequest, res: nextapirsonSon) => { essayer { const data = schema.parse ({ corps: req.method! == 'get'? Req.Body: Undefined, requête: req.query, }); Handler de retour (req comme n'importe quel, res); } catch (erreur) { if (instance d'erreur de zoderror) { return res.status (400) .json ({{ Erreur: ?échec de la validation?, Détails: Error.errors, }); } return res.status (500) .json ({error: 'Internal Server Error'}); } }; }
Cette fonction withValidation
sera:
- Vérifiez l'entrée
- "Injecter" les types
body
etquery
corrects au niveau du type - Cattrez l'erreur Zod et retournez 400
? Utilisation réelle: routage de l'API à sécurité type
// pages / api / users.ts import {NextAPirequest, NextAPiRESPONSE} de ?Next?; import {witchvalidation} de '@ / lib / api / handler'; import {CreateUSerschema} à partir de '@ / lib / schémas / userschema'; Exportation par défaut de difficulté ( CreateUserschema, Async Fonction CreateUser ( req: nextAPirequest & {body: {name: String; Email: cha?ne}}, Res: NextAPiRESPONSE ) { const {nom, email} = req.body; // ici Type Sécurité: le nom et le courrier électronique ont été garantis d'être cha?ne par Zod // peut être inséré en toute sécurité dans la base de données ... return res.status (201) .json ({{{{ ID: '123', nom, e-mail, }); } ));
Maintenant:
- Si le front-end passe
name: null
, il sera rejeté par Zod - Dans VS Code,
req.body.
aura un achèvement automatique complet - Tout accès à
req.body.phone
rapportera une erreur (sauf si le schéma est défini)
? Facultatif: Vérification de la réponse du format de réponse unifiée
En allant plus loin, vous pouvez également vérifier la sortie pour empêcher le retour inattendu des champs sensibles:
const CreateResponSeschema = z.object ({{ id: z.string (), Nom: z.string (), e-mail: z.string (), }); // const result = {id: '123', nom, e-mail}; const Parised = CreateResponSeschema.Parse (résultat); // Assurez-vous que la structure de sortie est correcte RETOUR RES.STatus (201) .json (analysé);
Vous pouvez même encapsuler une fonction d'outil validResponse(schema, data)
.
? Conseils: réutiliser les types frontaux
Le schéma ZOD peut générer des types de typeScript, de sorte que le frontal peut importer directement:
// Composant frontend importer type {createUserInput} à partir de '@ / lib / schémas / userschema'; const Data: CreateUserInput ['body'] = { Nom: ?Alice?, Courriel: ?Alice@example.com?, }; // Les types sont exactement les mêmes, et vous n'avez pas à vous soucier du champ de changement de backend
Fondamentalement, c'est tout. Avec une petite quantité d'encapsulation ZOD, le routage de l'API suivant peut être obtenu:
- Vérification automatique des paramètres du corps / de la requête de la demande
- Type de liaison complète Sécurité
- Meilleure expérience de développement (complétion automatique, rapport des erreurs précoces)
- Réduire les erreurs d'exécution
Pas compliqué, mais cela peut considérablement améliorer la qualité du projet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Ariaattributesenhancewebaccessibilibility pour les moyens de juger par destiné à la réduction de la réformation de l'assistance.

React lui-même ne gère pas directement la concentration ou l'accessibilité, mais fournit des outils pour traiter efficacement ces problèmes. 1. Utilisez des références pour gérer le focus par programmation, tels que le réglage de la mise au point des éléments via UseRef; 2. Utilisez des attributs ARIA pour améliorer l'accessibilité, tels que la définition de la structure et de l'état des composants de l'onglet; 3. Faites attention à la navigation au clavier pour vous assurer que la logique de mise au point dans des composants telles que les bo?tes modales est claire; 4. Essayez d'utiliser des éléments HTML natifs pour réduire la charge de travail et le risque d'erreur d'implémentation personnalisée; 5. React aide l'accessibilité en contr?lant le DOM et en ajoutant des attributs Aria, mais la bonne utilisation dépend toujours des développeurs.

Parlons directement des points clés: la fusion des ressources, la réduction des dépendances et l'utilisation des caches sont les méthodes de base pour réduire les demandes HTTP. 1. Fusionner les fichiers CSS et JavaScript, fusionnez les fichiers dans l'environnement de production via la création d'outils et conservez la structure modulaire de développement; 2. Utilisez des images Picture Sprite ou en ligne Base64 pour réduire le nombre de demandes d'image, qui conviennent aux petites ic?nes statiques; 3. Définissez la stratégie de mise en cache du navigateur et accélérez le chargement des ressources avec CDN pour accélérer le chargement des ressources, améliorer la vitesse d'accès et disperser la pression du serveur; 4. Retarder le chargement des ressources non critiques, comme utiliser des scripts chargés de chargement = "paresseux" ou asynchrones, réduire les demandes initiales et veiller à ne pas affecter l'expérience utilisateur. Ces méthodes peuvent optimiser considérablement les performances de chargement des pages Web, en particulier sur le réseau mobile ou médiocre

Sallewrenderingtestsacomponenttinisolation, sans enfants, tandis que la réduction de l'inclusion descomponents.

STRICTMODE ne rend aucun contenu visuel dans React, mais il est très utile pendant le développement. Sa fonction principale est d'aider les développeurs à identifier les problèmes potentiels, en particulier ceux qui peuvent provoquer des bogues ou un comportement inattendu dans des applications complexes. Plus précisément, il signale les méthodes de cycle de vie dangereuses, reconna?t les effets secondaires dans les fonctions de rendu et met en garde contre l'utilisation de l'ancien refapi de cha?ne. En outre, il peut exposer ces effets secondaires en répétant intentionnellement des appels à certaines fonctions, incitant ainsi les développeurs à déplacer des opérations connexes vers des emplacements appropriés, tels que le crochet USEEFECT. Dans le même temps, il encourage l'utilisation de méthodes de référence plus récentes telles que UseRef ou REP REF au lieu de String Ref. Pour utiliser Stri efficacement

Créez des projets compatibles TypeScript à l'aide de VUECLI ou VITE, qui peuvent être rapidement initialisés via des fonctionnalités de sélection interactives ou à l'aide de modèles. Utilisez des balises dans les composants pour implémenter l'inférence de type avec DeFéComponent, et il est recommandé de déclarer explicitement les accessoires et d'émettent des types, et d'utiliser l'interface ou le type pour définir des structures complexes. Il est recommandé d'étiqueter explicitement les types lors de l'utilisation de REF et réactifs dans les fonctions de configuration pour améliorer la maintenabilité du code et l'efficacité de collaboration.

Server-sideredering (ssr) innext.jsgenerateshtmlONTheServerForEachRequest, ImpromingPerformanceAndSeo.1.SSRISIDEALFORDYNYMICCONTENTTHATCHANGESSFREQUENDEM

Il y a trois points clés à ma?triser lors du traitement des formulaires Vue: 1. Utilisez le modèle V pour obtenir la liaison bidirectionnelle et synchroniser les données de formulaire; 2. Implémentez la logique de vérification pour assurer la conformité des entrées; 3. Contr?lez le comportement de soumission et les demandes de processus et les commentaires d'état. En Vue, des éléments de formulaire tels que les cases d'entrée, les cases à cocher, etc. peuvent être liés aux attributs de données via le modèle V, tels que la synchronisation automatique de l'entrée utilisateur; Pour plusieurs scénarios de sélection de cases à cocher, le champ de liaison doit être initialisé dans un tableau pour stocker correctement plusieurs valeurs sélectionnées. La vérification du formulaire peut être implémentée via des fonctions personnalisées ou des bibliothèques tierces. Les pratiques courantes incluent la vérification si le champ est vide, à l'aide d'un format de vérification régulier et à afficher des informations rapides lorsque les erreurs sont erronées; Par exemple, la rédaction d'une méthode ValidateForm pour renvoyer l'objet de message d'erreur de chaque champ. Vous devez l'utiliser lors de la soumission
