如何用Lumen构建一个纯API后端项目

关于Lumen的资料确实太少,而且都比较旧,从官网也得不到许多有用的信息,所以在此进行记录。

顺便吐槽一下,Lumen阉割的东西占比最大就是那个文件系统库,其他好用的不占地方的组件都阉割掉了(尤其是cli的一些命令),简直就是残废,但是还是比很多框架好用,唉!

安装Lumen

这个很简单,直接

composer create-project --prefer-dist laravel/lumen blog

即可。

配置Bootstrap

Lumen基于Laravel精简了一些组件,这导致少了一些Laravel的便利性,例如ServiceProvider和config等自动扫描功能,需要我们到bootstrap/app.php手动配置。

“Register Config Files”这部分,需要将想要引入的config配置写出来,否则config函数无法读取。

若需要配置API认证(登录认证),将以下代码的注释去掉:

//这个在Register Middleware
$app->routeMiddleware([
    'auth' => App\Http\Middleware\Authenticate::class,
]);
//这个在Register Service Providers
$app->register(App\Providers\AuthServiceProvider::class);

若想要引入ide-helper,首先需要安装league/flysystem。注意,Laravel/Lumen仅支持其1.x版本,因此安装时指定版本:

composer require "league/flysystem":"^1.1"

然后引入ide-helper:

composer require barryvdh/laravel-ide-helper --dev

回到bootstrap/app.php,将以下代码的注释去掉:

$app->register(App\Providers\AppServiceProvider::class);

并在它的上一行加上:

$app->register(Illuminate\Filesystem\FilesystemServiceProvider::class);

然后进入AppServiceProvider.php,在register方法中添加代码:

if ($this->app->environment() !== 'production') {
    $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}

即可按Laravel的方法来使用ide-helper了。

其他设置可以不用动,要是想自定义也可以研究一下。

定义认证方式

默认的认证方式在AuthServiceProvider的boot方法中。

具体要怎么实现,自己决定,默认是判断User表的api_token字段(代码有写)。

实现登录

一般Laravel项目都是自带一个很方便的LoginController之类的东西,但是Lumen不仅没有,Authentication的东西也阉割了不少。

例如:Auth门面没有attempt方法;没有ThrottlesLogins也就是登录次数限制。很多东西是要自己实现的。不过做一个简单的API,这些东西都不用考虑太多,可以直接莽~

往好的想,至少它还给你留了一些基础功能。

 

待续……

发表评论