首页  >  问答  >  正文

构建高效的Laravel应用:实现双API和视图功能,并进行控制器分离

<p>我希望将我的Laravel应用程序结构化,以便有效处理API和视图功能,同时避免在控制器中重复。</p> <p>我该如何设置我的应用程序以拥有两个独立的控制器,一个专门用于API操作,另一个用于与视图相关的操作?</p> <p>此外,处理这些控制器之间的共享逻辑的最佳方法是什么,我如何确保关注点的正确分离?</p>
P粉558478150P粉558478150449 天前613

全部回复(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
  • 取消回复