1

我有一个laravel项目,是关于学生和他们的课程的。

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

但是现在我如何使它成为一个 API?我需要将学生的课程分享到另一个网站,因此我需要创建一个 API 对吗?

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

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

4

1 回答 1

2

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

现在,要创建 API,使用 Laravel 非常容易。网上有很多像这样的免费资源:https ://tutorials.kode-blog.com/laravel-5-rest-api 。只需谷歌该主题以获取更多信息。

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

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 身份验证通过检查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
于 2017-02-28T04:22:27.053 回答