bencen / lumen-api-demo

lumen 5.1/5.2 api demo with dingo-api, JWT, CORS, phpunit

Home Page:http://lumen-new.lyyw.info/apidoc/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lumen-api-demo

一个用lumen5.2 和dingoapi 写api的例子

lumen5.1看这里 (不更新了)

相关文档

usage

$ git clone git@github.com: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文档`

问题总结

lumen 5.1 upgrade to 5.2

  • 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过来

jwt 使用

lumen 5.2取消了session,没有了auth的实例,所以使用jwt的时候需要配置一下,注意config/auth.php中的配置,而且user的model需要实现Tymon\JWTAuth\Contracts\JWTSubject;

mail 使用

  • composer 加illuminate/mail 和guzzlehttp/guzzle 这两个库
  • 在bootstrap/app.php 或者 provider中注册mail服务
  • 增加配置 mail和services, 从laravel项目里面cp过来
  • 在env中增加MAIL_DRIVER,账户,密码等配置

cors

dingoapi 返回的时候回触发事件ResponseWasMorphed, 所以可以响应这个事件,增加header。

但是这样就不能控制哪些路由需要这些header,所以还是写在middleware里面比较好

TODO

  • lumen 下邮件发送,注册验证
  • cursor 解决无限下拉的问题
  • 单元测试
  • 尝试增加mongodb的repository

  • dingo/api#672 transformer include
  • 如果.env的某个值中有空格会报错log not found

License

MIT license

About

lumen 5.1/5.2 api demo with dingo-api, JWT, CORS, phpunit

http://lumen-new.lyyw.info/apidoc/


Languages

Language:PHP 50.9%Language:JavaScript 28.7%Language:HTML 14.6%Language:CSS 5.4%Language:ApacheConf 0.5%