如何将我的laravel项目转换为api?

时间:2017-02-28 03:56:14

标签: php laravel api laravel-passport

我有一个laravel项目,该项目与学生及其课程有关。

此项目具有CRUD个功能,用户(主要是学校的管理员)可以创建用户并分配他们的课程。我已经成功创建了这个项目。

但是现在我该如何制作这个API呢?我需要将学生课程分享到另一个网站,因此我需要创建一个API吗?

我从未创建API in laravel,当我查看Laravel的文档时,它有一个名为API authentication using passport的主题,这是在讨论要求用户在访问API之前先登录 ?。

如果有人可以解释一下创建API以及从哪里开始,那将会非常有用。

1 个答案:

答案 0 :(得分:2)

您正试图让其他网站访问以查看学生课程。数据是否公开?如果是,您不需要身份验证。但这意味着每个拥有API URL的人都可以访问数据。在API上使用身份验证完全取决于您。

现在,要创建一个API,使用Laravel非常容易。像这样的网上有大量的免费资源:https://tutorials.kode-blog.com/laravel-5-rest-api。只需google主题了解更多信息。

基本上,API的工作方式与您在控制器和路由方面的工作方式完全相同。在laravel 5.4中,有一个位于routes/api.php的api的单独路由文件。这就是你定义路线的地方。

Route::get('courses', 'Api\CourseController@index');

此路线将回复https://www.website.com/api/courses,并会链接到index()中的app/Http/Controllers/Api/CourseController.php功能。您必须自己创建该控制器。

查看该路线文件,您可以看到开箱即用的东西

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

这意味着路由/api/user将需要身份验证,因为auth:api中间件。

到目前为止,在您的控制器中,您将返回视图。在api控制器中,您将返回响应

public function index()
{
    $courses = Course::all();
    return response()->json($courses);
}

调用该网站的应用程序将收到一个包含一系列课程的JSON对象。有关回复的更多信息,请访问:https://laravel.com/docs/5.4/responses

关于api_token laravel提供的默认API身份验证通过检查users表中的api_token属性来工作。 api_token必须出现在发送给api的请求的标头中。然后,Laravel将使用该api_token来识别发出请求的用户。在默认应用程序中,要获取用户,请执行

$user = Auth::user();

在API控制器中,您可以

$user = Auth::guard('api')->user();
//Auth will look for api_token to get the user making the request