- Published on
- Authors
 - Name
- UniClown
- @uniclown
 
 
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;
}
