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

how to convert my laravel project to an api?

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

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

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

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

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

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

现在,要创建 API,使用 Laravel 非常容易。在线有大量免费资源,例如:https://tutorials.kode-blog.com/laravel-5-rest-api。只是google更多的主题。

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

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

此路由将响应 https://www.website.com/api/courses 并将 link 响应位于 app/Http/Controllers/Api/CourseController.php 中的函数 index()。您必须自己创建该控制器。

查看那个路由文件,你可以看到开箱即用的东西

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

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

到目前为止,在您的控制器中,您 return 观看。在 api 控制器中,您将 return 响应

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

调用该网站的应用程序将收到包含一系列课程的 JSON object。更多关于回复的信息:https://laravel.com/docs/5.4/responses

关于api_token laravel 提供的默认 API 身份验证通过检查用户 table 的 api_token 属性来工作。 api_token 必须出现在发送到 api 的请求的 headers 中。 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