Maison  >  Questions et réponses  >  le corps du texte

Créez des applications Laravel efficaces : implémentez des fonctions d'API et d'affichage doubles, ainsi que des contrôleurs séparés

<p>Je souhaite structurer mon application Laravel pour gérer efficacement les API et afficher les fonctionnalités tout en évitant la duplication dans les contrôleurs. </p> <p>Comment configurer mon application pour qu'elle dispose de deux contrôleurs distincts, l'un dédié aux opérations API et l'autre aux opérations liées aux vues ? </p> <p>De plus, quelle est la meilleure façon de gérer la logique partagée entre ces contrôleurs et comment garantir la séparation correcte des problèmes ? </p>
P粉558478150P粉558478150449 Il y a quelques jours610

répondre à tous(1)je répondrai

  • P粉818125805

    P粉8181258052023-08-17 00:53:13

    Vous pouvez créer le même nom de classe pour l'API et la vue. En créant des contrôleurs dans différents espaces de noms, par exemple :

    // 如果您尝试这样做
    php artisan make:controller API/AuthController
    // 它将创建控制器类以及API文件夹。
    Http/Controllers/API/AuthContoller.php

    Pour les problèmes partagés, veuillez créer le dossier Traits dans l'application, puis créer la classe de traits PHP.

    <?php
    namespace App\Traits;
    use App\Models\Student;
    
    trait StudentTrait {
        public function listAll() {
           // 获取学生
           $students = Student::all();
           return $students; 
        }
    }

    Vous pouvez l'utiliser dans un modèle ou un contrôleur, en utilisant le mot-clé use.

    <?php
    namespace App\Http\Controllers\API;
    use Illuminate\Http\Request;
    use App\Traits\StudentTrait;
    
    class AuthController extends Controller
    {
      use StudentTrait;
    
      // 做你的事情
    
     public function getStudents(){
        $strudents = $this->listAll();
        return new JsonResponse(['students' => $students, 'msg' => 'success']);
     }
    }

    Pour les problèmes indépendants et le développement structuré, vous pouvez créer des modèles de service ou de référentiel. Pour plus d'informations, veuillez cliquez.

    répondre
    0
  • Annulerrépondre