cbxtechcorp / lumen-rest-api-template
使用JWT认证的Lumen框架Rest API样板
Requires
- php: ^7.3|^8.0
- dingo/api: ^3.0
- illuminate/mail: ^8.80
- illuminate/redis: ^8.80
- laravel/lumen-framework: ^8.3.1
- laravel/tinker: ^2.7
- liyu/dingo-serializer-switch: ^0.3.2
- nesbot/carbon: ^2.55
- palanik/lumen-cors: dev-master
- spatie/laravel-permission: ^5.5
- tymon/jwt-auth: ~1.0.1
Requires (Dev)
- fakerphp/faker: ^1.9.1
- flipbox/lumen-generator: ^8.2
- mockery/mockery: ^1.3.1
- phpunit/phpunit: ^9.5.10
This package is auto-updated.
Last update: 2024-09-30 01:37:53 UTC
README
这是一个为Lumen 8.x准备的样板,如果你使用Lumen编写REST API,这将有助于你。
此项目使用
编写一些简单的API。
查看我的其他仓库,该仓库专注于此模板的回复,但使用graphql lumen-graphql-api-template
请随意提出pull request,使此仓库变得更好 :D
待办事项
- docker
- phpunit验证
主要功能
记录你的API
apidoc -i App/Http/Controller/Api/v1 -o public/apidoc
使用Artisan生成器
默认情况下,Lumen不支持laravel/artisan生成器,使用此扩展,我们可以在执行“dev inclusive”composer install时使用这些命令。
测试
php artisan make:model MyModel
有用链接
- 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
- Rest API调试 Insomnia
- 一篇好文章 http://oomusou.io/laravel/laravel-architecture
安装
1 安装项目
使用GIT
git clone https://github.com/marco-gallegos/lumen-rest-api-template.git new_api
cd new_api
composer install
cp .env.example .env
php artisan jwt:secret
使用Composer
composer create-project --stability dev cbxtechcorp/lumen-rest-api-template new_api
2 配置项目
现在让项目访问您的数据库并创建一个带有测试用户的用户表。
vim .env DB_* configure your database access APP_KEY key:generate is abandoned in lumen, so do it yourself md5(uniqid()),str_random(32) etc.,maybe use jwt:secret and copy it php artisan migrate --seed
文档
提供API服务
php artisan serve
# or
php -S localhost:8000 -t public
部署
在生产服务器上,我们可以省略开发包的autoload,使用此命令
composer install --no-dev
路由
我们有一些路由可以开始。
- api/v1/users
- api/v1/permission
常见问题解答
关于JWT
由于Lumen 5.2中没有session和auth guard,所以请注意 config/auth.php
。此外,用户模型必须实现 Tymon\JWTAuth\Contracts\JWTSubject
如何使用邮件
- composer require
illuminate/mail
和guzzlehttp/guzzle
- 在
bootstrap/app.php
或some provider
中注册电子邮件服务 - 在config中添加
mail.php
services.php
,只需从laravel复制它们即可 - 在env中添加
MAIL_DRIVER
如何使用transformer
transformer是一个帮助你格式化资源及其关系的层。
也许你可以通过以下链接了解
- https://lumen-new.lyyw.info/api/posts
- https://lumen-new.lyyw.info/api/posts?include=user
- https://lumen-new.lyyw.info/api/posts?include=user,comments
- https://lumen-new.lyyw.info/api/posts?include=user,comments:limit(1)
- https://lumen-new.lyyw.info/api/posts?include=user,comments.user
- https://lumen-new.lyyw.info/api/posts?include=user,comments:limit(1),comments.user
transformer数据序列化
dingo/api使用Fractal来转换资源,Fractal提供3种序列化器,Array,DataArray,JsonApi。更多详情请参考这里 http://fractal.thephpleague.com/serializers/。DataArray是默认的。您可以设置自己的序列化器,如下所示:
查看 bootstrap/app.php 中的 $app['Dingo\Api\Transformer\Factory'] 设置适配器函数:$app['Dingo\Api\Transformer\Factory']->setAdapter(function ($app) { $fractal = new League\Fractal\Manager; // $serializer = new League\Fractal\Serializer\JsonApiSerializer(); $serializer = new League\Fractal\Serializer\ArraySerializer(); // $serializer = new App\Serializers\NoDataArraySerializer(); $fractal->setSerializer($serializer);, 返回 new Dingo\Api\Transformer\Adapter\Fractal($fractal); });
我认为默认的 DataArray 已经足够好。