亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Table des matières
? schéma qui définit les demandes et les réponses
? ? Créer un processeur API à sécurité type
? Utilisation réelle: routage de l'API à sécurité type
? Facultatif: Vérification de la réponse du format de réponse unifiée
? Conseils: réutiliser les types frontaux
Maison interface Web Questions et réponses frontales API de type SEAT-SAFE dans Next.js avec ZOD

API de type SEAT-SAFE dans Next.js avec ZOD

Jul 27, 2025 am 02:17 AM
Next.js zod

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.

API de type SEAT-SAFE dans Next.js avec ZOD

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.

API de type SEAT-SAFE dans Next.js avec ZOD

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:

API de type SEAT-SAFE dans Next.js avec ZOD
  • 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&#39;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 .

API de type SEAT-SAFE dans Next.js avec ZOD
 // lib / api / handler.ts
import {NextAPirequest, NextAPiRESPONSE} de ?Next?;
import {zodschema, zoDerror} de &#39;zod&#39;;

Type Handler <T> = (
  req: nextAPirequest & {body: t [&#39;body&#39;]; requête: t [&#39;query&#39;]},
  Res: NextAPiRESPONSE
) => Promesse <nud> | vide;

Fonction d&#39;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! == &#39;get&#39;? Req.Body: Undefined,
        requête: req.query,
      });

      Handler de retour (req comme n&#39;importe quel, res);
    } catch (erreur) {
      if (instance d&#39;erreur de zoderror) {
        return res.status (400) .json ({{
          Erreur: ?échec de la validation?,
          Détails: Error.errors,
        });
      }
      return res.status (500) .json ({error: &#39;Internal Server Error&#39;});
    }
  };
}

Cette fonction withValidation sera:

  • Vérifiez l'entrée
  • "Injecter" les types body et query 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 &#39;@ / lib / api / handler&#39;;
import {CreateUSerschema} à partir de &#39;@ / lib / schémas / userschema&#39;;

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&#39;ê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: &#39;123&#39;,
      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: &#39;123&#39;, 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 &#39;@ / lib / schémas / userschema&#39;;

const Data: CreateUserInput [&#39;body&#39;] = {
  Nom: ?Alice?,
  Courriel: ?Alice@example.com?,
}; // Les types sont exactement les mêmes, et vous n&#39;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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Quels sont les attributs aria Quels sont les attributs aria Jul 02, 2025 am 01:03 AM

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

Comment React gère-t-il la gestion de la mise au point et l'accessibilité? Comment React gère-t-il la gestion de la mise au point et l'accessibilité? Jul 08, 2025 am 02:34 AM

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.

Comment minimiser les demandes HTTP Comment minimiser les demandes HTTP Jul 02, 2025 am 01:18 AM

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

Décrivez la différence entre le rendu peu profond et le rendu complet dans les tests de réaction. Décrivez la différence entre le rendu peu profond et le rendu complet dans les tests de réaction. Jul 06, 2025 am 02:32 AM

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

Quelle est la signification de la composante StrictMode dans React? Quelle est la signification de la composante StrictMode dans React? Jul 06, 2025 am 02:33 AM

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

Vue avec guide d'intégration de typeScript Vue avec guide d'intégration de typeScript Jul 05, 2025 am 02:29 AM

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.

Rendu c?té serveur avec next.js expliquée Rendu c?té serveur avec next.js expliquée Jul 23, 2025 am 01:39 AM

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

Comment gérer les formulaires en Vue Comment gérer les formulaires en Vue Jul 04, 2025 am 03:10 AM

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

See all articles