【问题标题】:How to write REST Web services in Laravel 5.2?如何在 Laravel 5.2 中编写 REST Web 服务?
【发布时间】:2016-07-20 21:16:37
【问题描述】:

我正在为 laravel 5.2 版本的移动应用程序创建 api,但现在我面临一个问题。问题是在我的 routes.php 中,我为我的网站创建了路线。现在我的问题是,如果我开始为移动设备创建 api,我必须为移动 api 创建新路由,或者我也可以为 RESTapi 使用相同的路由? 在 Laravel 5.2 中,我是否必须添加任何 Web 服务库?如果是,请建议我如何在 Laravel 5.2 中使用 RESTapi?请帮忙。

我的路线.php

Route::auth();    
Route::get('/', 'Auth\AuthController@login');
Route::get('admin/users', 'UserController@getUsers');
Route::get('admin/users/add', 'UserController@addUser');

【问题讨论】:

标签: rest laravel laravel-5.2


【解决方案1】:

如果你的路由及其内部逻辑返回json响应,则不需要创建新路由,但是如果你的路由没有返回json响应,则必须编写新路由。 为了获得更好的 API,json-haljsendjson-api 约定可能会对您有所帮助。

【讨论】:

    【解决方案2】:

    您的 api 路由可以与您的常规网络路由共存。但是,通常通过子域 (https://api.yoursite.com) 或至少是路径 (https://yoursite.com/api/v1) 将它们分开。 此外,通常包括 api 版本号,如我上一个示例所示。

    关于在 Laravel 中开发 api 的包,请看Dingo。它非常完整,提供了自己的路由器、版本控制、安全等。

    【讨论】:

      【解决方案3】:

      你在 laravel 中有不同的中间件。默认情况下,您应该激活“web”中间件。它可以直接在您的 routes.php 中、在您的控制器构造函数中或在 RouteServiceProvider.php 中

      您不会将 Web 中间件用于 api / restful 服务,因此您应该使用另一个中间件(例如,“api”中间件将请求限制为每分钟最多允许 60 个请求等)

      通常你将你的 api 请求分组

      Route::group(['prefix' => 'api/v1'], function()
      {
      ...
      }
      

      严格将它们与您的应用程序分开。然后,您还可以轻松更改为 v2,例如,如果您计划发布多个版本

      更新

      如果您的 api 逻辑遵循您的业务逻辑,那么您也可以只观察 ajax 调用并返回 json

      public function index(Request $request) {
          // do stuff here
          if($request->ajax()) {
             // return json
          }
      
          // return view
      }
      

      【讨论】:

      • 感谢@Frank 快速回复我的问题。在我的路线中,我没有使用中间件
      • 你确定,你检查过routeserviceprovider吗?
      • 如前所述,检查您的 RouteServiceprovider 并查找受保护的函数 mapWebRoutes(Router $router) (至少对我来说,这里定义了 routes.php 中的所有路由都使用 Web 中间件)
      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 2014-10-31
      • 2011-03-09
      相关资源
      最近更新 更多