logo

Laravel

  • Published on
    ## Laravel API开发实践 ### 1. 创建模型 ``` $ php artisan make:model Lesson -m ``` --migration or -m 代表自动创建一个数据库迁移文件 ### 2. 创建数据库迁移 ``` Schema::create('lessonss', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->text('body'); $table->boolean('free'); $table->timestamps(); }); ``` ### 3. 执行数据库迁移 ``` $ php artisan migrate ``` ### 4.创建控制器 ``` $ php artisan make:controller App\\Api\\Controllers\\LessonsController ``` ### 5.添加路由 ``` Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); $api = app('Dingo\Api\Routing\Router'); $api->version('v1', function ($api) { $api->group(['namespace' => 'App\Api\Controllers'], function ($api) { $api->get('lessons', 'LessonsController@index'); $api->get('lessons/{id}', 'LessonsController@show'); }); }); ``` ### 6.添加控制器方法 ``` public function index() { $lessons = Lesson::all(); return response()->json($data); } ``` ### 7.创建返回数据的模板 ``` use App\Lesson; use League\Fractal\TransformerAbstract; class LessonTransformer extends TransformerAbstract { public function transform(Lesson $lesson) { return [ 'title' => $lesson['title'], 'content' => $lesson['body'], 'is_free' => (boolean)$lesson['free'] ]; } } ``` ### 8.修改控制器方法,让返回数据使用模板 ``` public function index() { $lessons = Lesson::all(); return $this->collection($lessons,new LessonTransformer()); } ``` ### 9.使用Dingo的helpers ``` use Dingo\Api\Routing\Helpers; class Controller extends BaseController { use Helpers,AuthorizesRequests, DispatchesJobs, ValidatesRequests; } ```