【问题标题】:How to structure a website built upon own API in laravel如何在 laravel 中构建基于自己的 API 的网站
【发布时间】:2014-11-23 06:46:02
【问题描述】:

我正在 laravel 中构建一个小型电视节目库。我还想包含一个 API,以备将来可能的扩展。当我开始的时候,我有 2 个控制器,本来应该是一个控制器:API 控制器和 Web 前端控制器。他们都处理相同的逻辑。这显然不是一个好的做法,因为这会导致重复代码。

如何让我的应用程序以 API 为中心?我正在考虑使用一个 API 控制器来处理所有逻辑并返回一个 JSON 对象和一个用于前端的常规控制器,该控制器只需获取 API 控制器返回的 JSON 对象并将其传递给视图(如果有的话,在处理之后) .如果这是要走的路,我将如何检索所述对象?向我自己的服务器发送GET 请求?

【问题讨论】:

    标签: php json laravel laravel-4


    【解决方案1】:

    如果您正在开发 API,那么它应该在单独的服务器上以从主 Web 服务器中卸载负载。 如果它在同一台服务器上,为什么要向它发送请求,因为您可以开发一个可以充当 API 并在 Web 控制器中调用它的类。

    稍后当您决定使用单独的服务器时,只需将 API 控制器包装在该类周围即可。

    <?php
    $myApi = new MyApi();
    $myApi->setParmas( $paramsArray );
    $myApi->doLogic();
    echo $myApi->asJson();
    
    // or make API class that can handle one liner
    echo MyApi::factory($_GET)->doLogic()->toJson();
    ?>
    

    【讨论】:

      【解决方案2】:

      让您的 Laravel 应用程序成为 API 端点,并使用前端框架或一些前端路由和模板库来处理客户端。

      使用/api 和版本(即/api/v1)为api 命名空间

      这使您可以轻松地使用多种不同的技术进行开发,而不必重写您的后端,因为它只是一个 API 端点。

      然后它可以为您的 web 应用、iOS 应用、Android 应用等提供服务,因为它所做的只是处理数据、验证、请求、安全等。

      【讨论】:

        【解决方案3】:

        您可以使用存储库来获取所需的数据,然后您可以将其传递给View 以制作网页,或者仅打印 JSON,用于 API,这样您可以防止重复代码。

        Route::get('/latest', function () {
            return View::make('latest', Movie::latest());
        }
        Route::get('/api/latest', function () {
            return json_encode(Movie::latest());
        }
        

        观看此视频以获取有关 Laravel 存储库的更多信息:http://vimeo.com/53029232

        【讨论】:

          【解决方案4】:

          在 larval 5.3 中,您可能需要考虑使用 larval 护照,它提供了一种非常好的方式来从前端使用您自己的 api,而无需过多担心身份验证https://laravel.com/docs/5.3/passport#consuming-your-api-with-javascript

          在 laracasts https://laracasts.com/series/whats-new-in-laravel-5-3/episodes/13 上也有一个很好的视频

          【讨论】:

            猜你喜欢
            • 2018-11-14
            • 1970-01-01
            • 2019-03-11
            • 1970-01-01
            • 2020-10-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多