Laravel:路线目录中的Api.php

时间:2017-04-21 09:56:43

标签: php laravel web-services rest api

我有点困惑,我有一个登录,注册,注销的Web应用程序。一些仪表板视图等(CRUD),我也想为这个应用程序制作api。

与第三方将使用的api类似,可以更新记录,可以删除记录等。

实际上应该有一些方法可以被移动应用程序用于CRUD。

我知道我们有路由/ api.php,但我很困惑,何时使用它。请解释一下情景,我是空白。

更新

方案

具有视图,身份验证系统等的应用程序, Android应用程序如何能够在同一个应用程序上执行CRUD操作

2 个答案:

答案 0 :(得分:1)

1.web路由使用会话状态,CSRF保护。它是否意味着api路由不使用会话状态,CSRF保护?

所有可能但不是必需的。您仍然可以使用会话等,但这违反了REST原则。

2.laravel 5.3使用单独的web和api路由,有什么优点吗?

这只是为了您的方便。在Laravel 5.2中,您需要为[' web']或[' api']等路线指定中间件,但它不再需要。在存储在单独文件中的5.3路由中,并指定不需要的路由中间件。

答案 1 :(得分:0)

如果您在api.php中指定路由,则需要使用auth:api中间件。例如:

Route::group(['middleware' => ['auth:api']], function () {
        Route::get('/test', function (Request $request) {
             return response()->json(['name' => 'test']);
        });
    });

关于Token auth和Laravel 5.3的注释:

如果您已设置laravel的默认身份验证系统,则还需要为用户表添加api_token列。如果您使用数据库播种机,则可能需要添加以下内容:

$table->char('api_token', 60)->nullable(); 

到您的用户表播种机。或者,只需手动添加列,并使用随机的60-char键填充该列。

发出请求时,您可以将api_token添加为URL / Querystring参数,如下所示:

domain.com/api/test?api_token=[your 60 char key].

您也可以将密钥作为标题发送(如果使用Postman或类似名称),即:标题:授权,价值:承载[您的60个字符密钥]。

如果令牌不正确,我命令获得有用的错误,同时发送包含所有请求的以下标头:

Header: Accept, Value: application/json. This allows the expectsJson() check in the unauthenticated() function inside App/Exceptions/Handler.php to work correctly.