我有一个laravel
项目,该项目与学生及其课程有关。
此项目具有CRUD
个功能,用户(主要是学校的管理员)可以创建用户并分配他们的课程。我已经成功创建了这个项目。
但是现在我该如何制作这个API呢?我需要将学生课程分享到另一个网站,因此我需要创建一个API吗?
我从未创建API in laravel
,当我查看Laravel的文档时,它有一个名为API authentication using passport
的主题,这是在讨论要求用户在访问API之前先登录
?。
如果有人可以解释一下创建API以及从哪里开始,那将会非常有用。
答案 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