skrip42/api-skeleton

安装: 5

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 0

开放问题: 0

类型:项目

v2.0.1 2021-09-27 05:21 UTC

This package is auto-updated.

Last update: 2024-09-27 11:41:19 UTC


README

symfony api 框架

开箱即用的功能

  • 通过令牌进行授权
  • 带有错误捕获的 API 序列化器
  • 支持 put/patch 参数
  • 无需表单即可正确验证实体
  • 记录请求
  • crun-rest 生成器

创建新项目

composer create-project skrip42/api-skeleton <project_name>

创建 .env.local 并添加环境变量定义到其中

  • API_KEY - 您的 API 认证密钥

用法

序列化器

/** in you controller */

class CustomController extends AbstractApiController //extends AbstractApiController
{
    public function sameMethod() : Response
    {
        ...
        //use api(mixed $data, array $meta = []) method to serialize response
        return $this->api($dataOrEntity);
    }

    ...

使用序列化组

    //in you entity/DOT class
    /** @Groups("groupName") */
    private $field; //add annotation to filed

    /** @Groups("groupName") */
    public function GetField(): fieldtype //or to you public method

    //in you controller
    return $this->api(
        $dataOrEntity,
        [
            'groups' => 'groupName'
        ]
    );

使用分页

    //in you controller print some like this
    $page = $request->query->getInt('page', 1);
    $count = $repository->count([]);
    $perPage = $request->query->getInt('perPage', $count);
    $sort = $request->query->get('sort');
    $entities = $repository->findBy(
        $params,
        $sort,
        $perPage,
        $perPage * ($page - 1)
    );
    $this->api(
        $entities,
        [
            'currentPage' => $page,
            'perPage' => $perPage,
            'pagesTotal' => ceil($count / $perPage)
        ]
    );

带有 HTTP 状态码的错误

use App\Exceptions\ApiException;
...
throw new ApiException($message, $statusCode);

实体验证(需要 doctrineORM)

  • 在 services.yaml 中取消注释 App\EntityListener 块
  • 在您的实体中实现 App\Entity\ValidationInterface
  • 在您的实体中添加 @ORM\EntityListeners({"App\EntityListener\ValidateListener"}) 注解
  • 大功告成!

RestCRUD 生成器(需要 doctrineORM)

  • 在 services.yaml 中取消注释 App\Maker\MakeRest 块
  • 运行 ./bin/console make:rest 命令为您的实体创建 RestCRUD 控制器