Comment générer un corps HTTP personnalisé avec CakePHP 3.4 ?

DDD
Libérer: 2024-10-26 17:42:30
original
731 Les gens l'ont consulté

How to Output Custom HTTP Body with CakePHP 3.4?

Sortie d'un corps HTTP personnalisé avec CakePHP 3.4

CakePHP 3.4 introduit une approche plus stricte de la gestion des en-têtes, interdisant la répercussion directe des données dans les contrôleurs. Tenter de faire écho au contenu, comme indiqué ci-dessous, entraîne l'erreur « Impossible d'émettre des en-têtes » :

<code class="php">public function test() {
    $this->autoRender = false;
    echo json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
}</code>
Copier après la connexion

Pourquoi CakePHP se plaint

Cette pratique est déconseillée dans CakePHP pour plusieurs raisons :

  • Cela peut conduire à des données non reconnues dans les environnements de test.
  • Cela interfère avec la capacité de définir des en-têtes appropriés.
  • Cela peut entraîner des fichiers tronqués data.

Méthodes de sortie appropriées

Il existe deux approches recommandées pour envoyer une sortie personnalisée :

  1. Configurez l'objet de réponse :

    À l'aide de l'interface compatible PSR-7 :

    <code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
    
    $this->response = $this->response->withStringBody($content);
    $this->response = $this->response->withType('json');
    
    return $this->response;</code>
    Copier après la connexion

    À l'aide de l'interface obsolète :

    <code class="php">$content = json_encode(['method' => __METHOD__, 'class' => get_called_class()]);
    
    $this->response->body($content);
    $this->response->type('json');
    
    return $this->response;</code>
    Copier après la connexion
  2. Utiliser une vue sérialisée :

    <code class="php">$content = ['method' => __METHOD__, 'class' => get_called_class()];
    
    $this->set('content', $content);
    $this->set('_serialize', 'content');</code>
    Copier après la connexion

    Cette méthode nécessite le composant Request Handler et le mappage d'URL approprié pour utiliser le rendu JSON.

Matériel de référence

Pour plus d'informations, reportez-vous aux ressources suivantes :

  • Livre de recettes : Contrôleurs > Actions du contrôleur
  • Livre de recettes : Objets de requête et de réponse > Définir le corps
  • Livre de recettes : Vues > Vues JSON et XML
  • Normes PHP FIG : interfaces de messages HTTP PSR-7

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!