这是一个比较完整用lumen 5.2写的的REST api例子,如果你正在做相同的事,那么这个例子或许能帮助你。这个例子使用了dingo/api写rest风格的api,jwt实现登录,功能上很简单,登录,注册,发帖,评论,还写了单元测试。
lumen5.1看这里 (不更新了)
- dingo/api https://github.com/dingo/api
- json-web-token(jwt) https://github.com/tymondesigns/jwt-auth
- transformer fractal
- apidoc apidocjs
- rest api jsonapi.org
- debug rest api postman
- 参考文章 http://oomusou.io/laravel/laravel-architecture
- 在线api文档 http://lumen-new.lyyw.info/apidoc
$ git clone [email protected]:liyu001989/lumen-api-demo.git
$ composer install
$ cp .env.example .env
$ vim .env
DB_*
填写数据库相关配置 your database configuration
JWT_SECRET
php artisan jwt:secret
APP_KEY
lumen 取消了key:generate 所以随便找个地方生成一下吧
md5(uniqid()),str_random(32) 之类的,或者用jwt:secret生成两个copy一下
$ php artisan migrate
$ 生成文档我是这么写的 apidoc -i App/Http/Controller/Api/v1 -o public/apidoc
$ api文档在public/apidoc里面, 也可以看上面的 `在线api文档`
-
fix compose.json
"laravel/lumen-framework": "5.2.*", "vlucas/phpdotenv": "~2.2" // 这是个坑啊 将5.2的composer.json拿过来对比一下吧 -
fix bootstrap/app.php
-
Illuminate\Contracts\Foundation\Application 改为了Laravel\Lumen\Application,所以修改一下app\providers\EventServiceProvider.php
-
把Middleware cp过来
lumen 5.2取消了session,没有了auth的实例,所以使用jwt的时候需要配置一下,注意config/auth.php中的配置,而且user的model需要实现Tymon\JWTAuth\Contracts\JWTSubject;
- composer 加illuminate/mail 和guzzlehttp/guzzle 这两个库
- 在bootstrap/app.php 或者 provider中注册mail服务
- 增加配置 mail和services, 从laravel项目里面cp过来
- 在env中增加
MAIL_DRIVER,账户,密码等配置
dingoapi 返回的时候回触发事件ResponseWasMorphed, 所以可以响应这个事件,增加header。
我是写了一个全局的middleware。
我随便写的,rinvex/repository和prettus/l5-repository 这两个库都不错,大家可以试试
- lumen 下邮件发送,注册验证
- cursor 解决无限下拉的问题
- 单元测试
- 尝试增加mongodb的repository
- dingo/api#672
transformer include - 如果.env的某个值中有空格会报错log not found