我有点困惑,我有一个登录,注册,注销的Web应用程序。一些仪表板视图等(CRUD),我也想为这个应用程序制作api。
与第三方将使用的api类似,可以更新记录,可以删除记录等。
实际上应该有一些方法可以被移动应用程序用于CRUD。
我知道我们有路由/ api.php,但我很困惑,何时使用它。请解释一下情景,我是空白。
更新
方案
具有视图,身份验证系统等的应用程序, Android应用程序如何能够在同一个应用程序上执行CRUD操作?
答案 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.