cbxtechcorp / lumen-rest-api-template

使用JWT认证的Lumen框架Rest API样板

dev-master 2022-01-23 00:32 UTC

This package is auto-updated.

Last update: 2024-09-30 01:37:53 UTC


README

License PHP8 LUMEN8.X

这是一个为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

有用链接

安装

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/mailguzzlehttp/guzzle
  • bootstrap/app.phpsome provider 中注册电子邮件服务
  • 在config中添加 mail.php services.php,只需从laravel复制它们即可
  • 在env中添加 MAIL_DRIVER
如何使用transformer

transformer是一个帮助你格式化资源及其关系的层。

也许你可以通过以下链接了解

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 已经足够好。

查看原始项目

Lumen API 示例