Table des matières
Analyse du phénomène de problème et des causes profondes
Solution: configurer l'analyseur JSON de Yii2
Le backend obtient correctement les données JSON
Choses à noter
Résumer
Maison développement back-end tutoriel php Solution pour recevoir des demandes de post de type application / JSON dans le backend YII2

Solution pour recevoir des demandes de post de type application / JSON dans le backend YII2

Jul 25, 2025 pm 07:36 PM
apache nginx ai Accès aux données red

Solution pour recevoir des demandes de post de type application / JSON dans le backend YII2

Cet article explique les problèmes et les solutions courants du backend n'obtention pas correctement les données du corps de la demande dans le cadre YII2 lorsque la fin actuelle envoie une demande post-demande avec le type d'application / JSON. Le noyau est que l'analyseur de demande par défaut de YII2 ne traite pas le format JSON. Il est nécessaire d'activer l'analyse automatique des données JSON en introduisant yii \ web \ jsonParser dans la configuration de l'application pour s'assurer que le contrôleur backend peut accéder à la post-données en douceur.

Dans le développement Web moderne, les architectures de séparation frontale deviennent de plus en plus populaires, et il est devenu une pratique standard pour que le front-end envoie des données à l'interface API back-end au format JSON via JavaScript asynchrone (comme Fetch ou Axios). Cependant, lorsque vous utilisez le framework YII2 comme backend, les développeurs peuvent rencontrer un problème commun: même si le frontend envoie avec succès une demande post-demande de type de contenu: application / json, le backend ne peut obtenir aucune donnée via la méthode yii :: $ app-> request-> post (), et le résultat de retour est null ou vide.

Analyse du phénomène de problème et des causes profondes

Lorsque le côté actuel utilise l'API Fetch et définit le type de contenu sur Application / JSON, les données du corps de la demande seront envoyées comme la chaîne JSON d'origine. Par exemple:

 Soit csrfToken = document.QuerySelector ("meta [name = 'csrf-token']"). Contenu;
Soit csrfparam = document.QuerySelector ("meta [name = 'csrf-param']"). Contenu;

fetch ("http://site.se/react/save-babysitter", {
  Méthode: "Post",
  En-têtes: {
    "Contenu-type": "application / json",
    "Accepter": "application / json",
    "CSRF-Param": CSRFPARAM, // YII2 CSRF Paramètre "X-CSRF-TOKK
  corps: json.stringify ({
    'id': 123,
    «Nom»: «Nom de test»
  })
}). puis (réponse => réponse.json ())
  .Then ((data) => console.log (data));

Dans le backend yii2, si vous essayez d'obtenir les données directement via yii :: $ app-> request-> poster ('name') ou yii :: $ app-> request-> post (), vous pouvez constater que le résultat est vide:

 fonction publique actionsAveBabySitter ()
{
    $ request = yii :: $ app-> request;
    $ postdata = $ request-> post ('name'); // Pour le moment, $ postdata sera nul

    // Si vous essayez d'obtenir toutes les données post // $ allPostData = $ request-> post (); // À l'heure actuelle, $ allPostData sera un tableau vide echo json_encode (['reçu_data' => $ postdata]);
    Yii :: $ app-> end ();
}

La raison de ce problème est que le serveur Web (tel qu'Apache ou Nginx) n'analysera que les corps de demande de deux types de contenu: Application / X-WWW-FORM-URLENCODED ou Multipart / Form Data par défaut, et remplissez les données analysées dans la variable globale $ _post de PHP. Pour les demandes de type d'application / JSON, le contenu du corps de la demande ne sera pas automatiquement analysé à $ _POST. Par défaut, la méthode post () de la demande de Yii2 est principalement repose sur $ _POST ou son analyseur configuré en interne. Puisqu'il n'y a pas de l'analyseur JSON par défaut, il est impossible d'extraire les données JSON du corps de demande d'origine.

Solution: configurer l'analyseur JSON de Yii2

Pour que YII2 analyse automatiquement les corps de demande de type d'application / JSON et rend ses données accessibles via la méthode YII :: $ app-> request-> post (), nous devons ajouter un analyseur JSON au composant de demande dans la configuration de l'application YII2 (généralement config / web.php ou config / main.php).

Sous l'élément de configuration des composants, recherchez ou ajoutez la configuration du composant de demande et ajoutez la propriété PARSERS à l'intérieur:

 // config / web.php ou config / main.php
Retour [
    'Components' => [
        'request' => [
            // !!! Insérez une clé secrète dans ce qui suit (s'il est vide) - Ceci est requis par la validation des cookies
            'CookieValidationKey' => 'Votre secret-key',
            'activecsrfvalidation' => true, // Assurez-vous que la vérification CSRF est activée 'parsers' => [
                'application / json' => 'yii \ web \ jsonparser',
                // Si vous devez traiter avec XML ou d'autres types, vous pouvez également ajouter // 'application / xml' => 'yii \ web \ xmlparser',
            ],
            // ... Configuration des autres composants de demande],
        // ... autre configuration de composants],
    // ... Autres configurations de haut niveau];

Grâce à la configuration ci-dessus, lorsque le composant de demande de Yii2 reçoit une demande avec l'application de type contenu / JSON, il appellera automatiquement yii \ web \ jsonParser pour analyser la chaîne JSON dans le corps de la demande. Les données analysées sont accessibles directement via la méthode yii :: $ app-> request-> post ().

Le backend obtient correctement les données JSON

Après avoir configuré JsonParser, votre code de contrôleur peut obtenir des données JSON via la méthode YII :: $ app-> request-> post (), tout comme la gestion des demandes de poste ordinaires:

 fonction publique actionsAveBabySitter ()
{
    $ request = yii :: $ app-> request;

    // Obtenez toutes les données post-analyses $ AllPostData = $ request-> post ();

    // obtient un champ spécifique, tel que «nom»
    $ name = $ request-> post ('name');
    $ id = $ request-> post ('id');

    // Vous pouvez effectuer un traitement de logique métier sur $ allPostData, $ name, $ id ici // par exemple: Enregistrez dans la base de données, vérifiez les données, etc. // renvoie la réponse if ($ name && $ id) {
        Retour $ this-> asjson ([[
            'statut' => 'succès',
            'message' => 'Données reçues avec succès!',
            'reçus_id' => $ id,
            'reçus_name' => $ nom
        ]));
    } autre {
        Retour $ this-> asjson ([[
            'status' => 'error',
            'message' => 'manquer les données requises.'
        ]));
    }
}

Choses à noter

  1. Token CSRF : Lorsque le frontal envoie des données JSON, si YII2 permet la vérification CSRF (INALLACSRFVALIDAGE est défini sur true), assurez-vous d'inclure le jeton CSRF dans l'en-tête de demande. Il est généralement passé par des en-têtes X-CSRF-Token et CSRF-Param, comme indiqué dans l'exemple de code frontal.
  2. Méthode d'accès aux données : Après la configuration de JSonParser, la méthode YII :: $ app-> request-> post () renvoie automatiquement les données JSON analysées. Il n'est pas nécessaire d'utiliser manuellement File_get_Contents ('php: // input') et json_decode () pour obtenir le corps de demande d'origine.
  3. Gestion des erreurs et vérification des données : même si les données sont analysées avec succès, les données reçues doivent encore être validées et filtrées dans le contrôleur pour assurer la validité et la sécurité des données.
  4. Précision de type contenu : lorsque le frontal envoie une demande, l'en-tête de type contenu doit être défini avec précision sur Application / JSON, sinon le JSONParser ne sera pas déclenché.

Résumer

En ajoutant yii \ web \ jsonParser au composant de demande dans la configuration de l'application YII2, le backend ne peut pas obtenir de données lors de l'envoi de demandes de publication au format d'application / JSON. Cela permet à YII2 d'interagir de manière transparente avec les cadres frontaux et les API modernes, améliorant l'efficacité du développement et la maintenabilité du code. Une configuration appropriée de l'analyseur et combinée avec un traitement CSRF approprié est une étape clé dans la création d'une interface API YII2 robuste.

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 grâce à 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)

Comment utiliser PHP pour créer des fonctions de partage social PHP Partage d'interface Pratique Comment utiliser PHP pour créer des fonctions de partage social PHP Partage d'interface Pratique Jul 25, 2025 pm 08:51 PM

La méthode principale de création de fonctions de partage social dans PHP est de générer dynamiquement des liens de partage qui répondent aux exigences de chaque plate-forme. 1. Obtenez d'abord la page actuelle ou les informations d'URL et d'article spécifiées; 2. Utilisez UrLencode pour coder les paramètres; 3. Épisser et générer des liens de partage en fonction des protocoles de chaque plate-forme; 4. Afficher les liens sur l'avant pour que les utilisateurs puissent cliquer et partager; 5. Générez dynamiquement des balises OG sur la page pour optimiser l'affichage du contenu du partage; 6. Assurez-vous d'échapper à la saisie des utilisateurs pour empêcher les attaques XSS. Cette méthode ne nécessite pas d'authentification complexe, a de faibles coûts de maintenance et convient à la plupart des besoins de partage de contenu.

Comment utiliser PHP combiné avec l'IA pour obtenir la correction de texte de la syntaxe PHP détection et l'optimisation Comment utiliser PHP combiné avec l'IA pour obtenir la correction de texte de la syntaxe PHP détection et l'optimisation Jul 25, 2025 pm 08:57 PM

Pour réaliser la correction d'erreur de texte et l'optimisation de la syntaxe avec l'IA, vous devez suivre les étapes suivantes: 1. Sélectionnez un modèle ou une API d'IA appropriée, tels que Baidu, Tencent API ou bibliothèque NLP open source; 2. Appelez l'API via Curl ou Guzzle de PHP et traitez les résultats de retour; 3. Afficher les informations de correction d'erreur dans l'application et permettre aux utilisateurs de choisir d'adopter l'adoption; 4. Utilisez PHP-L et PHP_CODESNIFFER pour la détection de syntaxe et l'optimisation du code; 5. Collectez en continu les commentaires et mettez à jour le modèle ou les règles pour améliorer l'effet. Lorsque vous choisissez AIAPI, concentrez-vous sur l'évaluation de la précision, de la vitesse de réponse, du prix et du support pour PHP. L'optimisation du code doit suivre les spécifications du PSR, utiliser le cache raisonnablement, éviter les requêtes circulaires, revoir le code régulièrement et utiliser x

Les 10 meilleurs sites Web de marché des crypto-monnaies les plus autoritaires au monde (la dernière version de 2025) Les 10 meilleurs sites Web de marché des crypto-monnaies les plus autoritaires au monde (la dernière version de 2025) Jul 29, 2025 pm 12:48 PM

Les dix principales plateformes de marché de crypto-monnaie et d'analyse de données faisant autorité en 2025 sont: 1. CoinmarketCap, fournissant des classements de capitalisation boursière complets et des données de marché de base; 2. Coingecko, fournissant une évaluation de projet multidimensionnelle avec des scores d'indépendance et de confiance; 3. TradingView, ayant les cartes K-Line les plus professionnelles et les outils d'analyse technique; 4. Marché de la binance, fournissant les données les plus directes en temps réel comme le plus grand échange; 5. Marché d'Ouyi, mettant en évidence des indicateurs dérivés clés tels que le volume de position et le taux de capital; 6. Glassnode, en se concentrant sur les données sur chaîne telles que les adresses actives et les tendances des baleines géantes; 7. Messari, fournissant des rapports de recherche au niveau institutionnel et des données strictes strictes; 8. Cryptocompa

Comment choisir un site Web de marché libre dans le cercle des devises? La revue la plus complète en 2025 Comment choisir un site Web de marché libre dans le cercle des devises? La revue la plus complète en 2025 Jul 29, 2025 pm 06:36 PM

Les outils les plus appropriés pour interroger les marchés des stables en 2025 sont: 1. Binance, avec des données faisant autorité et des paires de trading riches, et des graphiques de tradingview intégrés adaptés à une analyse technique; 2. Ouyi, avec une interface claire et une forte intégration fonctionnelle, et prend en charge le fonctionnement unique des comptes Web3 et Defi; 3. CoinmarketCap, avec de nombreuses devises, et le secteur des stablescoin peut afficher le classement des valeurs de marché et les doyens; 4. Coingecko, avec des dimensions de données complètes, fournit des scores de confiance et des indicateurs d'activité communautaire, et a une position neutre; 5. Huobi (HTX), avec des conditions de marché stables et des opérations amicales, adaptées aux demandes d'actifs traditionnelles; 6. Gate.io, avec la collection la plus rapide de nouvelles pièces de monnaie et de niche, et est le premier choix pour les projets pour explorer le potentiel; 7. tra

Qu'est-ce qu'un stablecoin? Comprenez les stablecoins dans un article! Qu'est-ce qu'un stablecoin? Comprenez les stablecoins dans un article! Jul 29, 2025 pm 01:03 PM

Les stablecoins sont des crypto-monnaies avec une valeur ancrée par la monnaie ou les produits Fiat, conçus pour résoudre les fluctuations des prix telles que le bitcoin. Leur importance se reflète dans leur rôle d'outil de couverture, un moyen de négociation et un pont reliant la monnaie fiduciaire avec le monde cryptographique. 1. Les stablecoins fiat-collatéralisées sont pleinement soutenues par des monnaies fiduciaires telles que le dollar américain. L'avantage est que le mécanisme est simple et stable. L'inconvénient est qu'ils comptent sur la confiance des institutions centralisées. Ils représentent les projets, notamment USDT et USDC; 2. Les stablecoins collatéralisées en crypto-monnaie sont émises par des actifs cryptographiques traditionnels sur-collatéralisés. Les avantages sont la décentralisation et la transparence. L'inconvénient est qu'ils sont confrontés à des risques de liquidation. Le projet représentatif est DAI. 3. Les stablescoins algorithmiques reposent sur l'algorithme pour ajuster l'offre et la demande pour maintenir la stabilité des prix. Les avantages sont qu'ils n'ont pas besoin d'être garantis et ont une efficacité de capital élevée. L'inconvénient est que le mécanisme est complexe et que le risque est élevé. Il y a eu des cas d'effondrement du doyen. Ils font toujours l'objet d'une enquête.

Stratégie du Trésor Ethena: la montée du troisième empire de la stablecoin Stratégie du Trésor Ethena: la montée du troisième empire de la stablecoin Jul 30, 2025 pm 08:12 PM

L'utilisation réelle de Battle Royale dans le système de double monnaie ne s'est pas encore produite. Conclusion En août 2023, l'étincelle du protocole de prêt écologique Makerdao a donné un rendement annualisé de Dai8% $. Ensuite, Sun Chi est entré en lots, investissant un total de 230 000 $ Steth, représentant plus de 15% des dépôts de Spark, forçant Makerdao à faire une proposition d'urgence pour réduire le taux d'intérêt à 5%. L'intention initiale de Makerdao était de "subventionner" le taux d'utilisation de $ dai, devenant presque le rendement en solo de Justin Sun. Juillet 2025, Ethe

Qu'est-ce que Binance Treehouse (Tree Coin)? Aperçu du prochain projet Treehouse, analyse de l'économie de jetons et développement futur Qu'est-ce que Binance Treehouse (Tree Coin)? Aperçu du prochain projet Treehouse, analyse de l'économie de jetons et développement futur Jul 30, 2025 pm 10:03 PM

Qu'est-ce que Treehouse (Tree)? Comment fonctionne Treehouse (Tree)? Treehouse Products Tethdor - Taux de citation décentralisé Gonuts Points Système Treehouse met en évidence les jetons d'arbre et l'économie des jetons Présentation du troisième trimestre de l'équipe de développement de la feuille de route 2025, des investisseurs et des partenaires Treehouse Team Investment Fund Résumé Partenaire, car DeFi continue d'étendre les marques financières, la demande de produits à revenu fixe est en croissance, et son rôle est similaire au rôle des liaisons dans les marques financières traditionnelles. Cependant, construire sur la blockchain

Qu'est-ce qu'un stablecoin et pourquoi il peut changer l'avenir Qu'est-ce qu'un stablecoin et pourquoi il peut changer l'avenir Jul 29, 2025 pm 01:09 PM

Les pièces stables sont des crypto-monnaies dont la valeur est liée à des actifs stables tels que le dollar américain. Ils visent à résoudre le problème des grandes fluctuations des prix telles que le bitcoin. Il existe trois types principaux: 1. Les stablescoins garanties de la monnaie fiduciaire, tels que l'USDT et l'USDC, sont soutenues par les réserves de l'émetteur de monnaies fiduciaires équivalentes; 2. Les stablescoins garanties en argent, tels que DAI, sont générés par des actifs cryptographiques trop collatéralisés; 3. Stablecoins algorithmiques, s'appuyant sur des contrats intelligents pour ajuster l'offre et la demande pour maintenir la stabilité des prix. La raison pour laquelle les stablecoins peuvent changer l'avenir est: 1. Il s'agit d'un pont reliant le financement traditionnel et le monde de la cryptographie, réduisant le seuil pour l'entrée des utilisateurs; 2. Réaliser des paiements et des règlements mondiaux efficaces et à faible coût, améliorant considérablement l'efficacité du flux de capital transfrontalier; 3. Il forme la pierre angulaire de la finance décentralisée (DEFI), pour les prêts, les transactions, etc.

See all articles