Skip to content

cryhac/lumen-api-demo

 
 

Repository files navigation

lumen-api-demo

这是一个比较完整用lumen 5.2写的的REST api例子,如果你正在做相同的事,那么这个例子或许能帮助你。这个例子使用了dingo/api写rest风格的api,jwt实现登录,功能上很简单,登录,注册,发帖,评论,还写了单元测试。

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

ENGLISH README

USEFUL LINK

USAGE

$ 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文档`

问题总结

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。

我是写了一个全局的middleware。

repository

我随便写的,rinvex/repositoryprettus/l5-repository 这两个库都不错,大家可以试试

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 52.7%
  • JavaScript 27.5%
  • HTML 14.1%
  • CSS 5.2%
  • ApacheConf 0.5%