[英]Laravel REST API and frontend
我在 Laravel 中创建了一个小型数据库项目,并在 Laravel 中添加了 REST API 以将移动应用程序与数据库连接。 我应该使用什么来从 Web 应用程序中的数据库获取数据? 使用 Laravel 模型很容易,但这是创建另一个控制器来处理表单等而不是使用 rest api 控制器的好方法吗? 谢谢
Laravel 也以自己的方式支持 Restful API。 为了这
php artisan make:controller Api/TestController
在routes/api.php
定义你的路由:
Route::group(['namespace' => 'Api'], function (){ Route::group(['prefix' => '/test'], function () { Route::get('/', 'TestController@list); Route::get('/single', 'TestController@single'); }); });
为作为集合数组的数据创建资源集合
php artisan make:resource Api/Collections TestCollection
此命令在文件夹app/Http/Resources/Api/Collections
创建一个集合,打开并更改toArray($request)
函数并添加一个函数with($request)
如下代码:
public function toArray($request) { return $this->collection->map(function ($item){ return [ 'id' => $item->id, // $item is instance of Test model 'name' => $item->name, 'description' => $item->description, ]; }); } public function with($request) // optional : this method return with of response { return [ 'status' => true ]; }
所以去 TestController 并创建一个获取所有测试的方法:
public function list() { $tests = Test::all(); // your Test Model return new TestCollection($test); // TestCollection you created above }
这是返回一个包含测试数组的 json 对象。
获取单个测试: php artisan make:resource Api/Resources TestResource
然后转到app/Http/Resources/Api/Collections
TestResource 并更改如下代码:
public function toArray($request) { return [ 'id' => $this->id, 'name' => $this->name, // $this is instance of Test model 'description' => $this->description, 'body' => $this->body, 'diff_name' => $this->name_in_table // you can change the name differ from name in model instance ]; }
所以去 TestController 并为单个测试创建一个方法
public function single(Request $request)
{
$test = Test::findOrFail($request->id);
return new TestResource($test);
}
这是 laravel 中 Rest API 的总结。 希望你觉得它有用
使用 laravel,您可以利用CreateFreshApiToken
中间件来重用您的 api 端点。
然后你只需要创建新的控制器和方法来显示视图。 所有 CRUD 的东西都可以重用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.