搜尋

首頁  >  問答  >  主體

建構高效的Laravel應用:實現雙API和視圖功能,並進行控制器分離

<p>我希望將我的Laravel應用程式結構化,以便有效處理API和視圖功能,同時避免在控制器中重複。 </p> <p>我該如何設定我的應用程式以擁有兩個獨立的控制器,一個專門用於API操作,另一個用於與視圖相關的操作? </p> <p>此外,處理這些控制器之間的共享邏輯的最佳方法是什麼,我如何確保關注點的正確分離? </p>
P粉558478150P粉558478150517 天前686

全部回覆(1)我來回復

  • P粉818125805

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

    您可以建立相同的類別名,既可以用於API,也可以用於檢視。透過在不同的命名空間中建立控制器,例如:

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

    對於共享的問題,請在app中建立Traits資料夾,然後建立PHP trait類別。

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

    您可以在模型或控制器中使用它,使用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']);
     }
    }

    對於獨立的問題和結構化開發,您可以建立服務或儲存庫模式。 有關更多信息,請點擊

    回覆
    0
  • 取消回覆