asylum29/api-skeleton

Symfony api-skeleton

This package is auto-updated.

Last update: 2024-09-29 06:08:44 UTC


README

为 Symfony 创建的 API 模板。

特性

  • 自动解析进入的 http-请求到 DTO-对象,参数在控制器动作中
  • 控制器 BaseController 包含 success()error() 方法,支持序列化和 validate() 方法进行验证
  • 对 http-请求进行错误处理
  • 使用 NelmioApiDocBundle 生成文档
  • 所有路由前缀为 api

创建新项目

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

基于 .env 创建 .env.local 并指定所需参数。

使用方法

序列化

// унаследуйте контроллер от BaseController
class CustomController extends BaseController
{
    /**
     * @Route("/custom", name="app_custom")
     */
    public function index(): Response
    {
        ...
        return $this->success($dataOrEntity);
    }
}

序列化组

// в Entity или DTO
/** @Groups("groupName") */
private $field;
/** @Groups("groupName") */
public function getField(): fieldtype

// в контроллере
return $this->success($dataOrEntity, ['groups' => 'groupName']);

分页导航

// в контроллере
return $this->success(
    $entities,
    [
        'current_page' => $page,
        'per_page' => $perPage,
        'total' => $count,
    ]
);

生成错误

// в контроллере
public function index(): Response
{
    ...
    if (!$valid) {
        $this->error($message, $status);
    }
    ...
}

在控制器中使用 DTO 并从 Request 中填充

// в классе DTO
/** @RequestDto */
class СustomDto

// в контроллере
public function index(СustomDto $dto): Response

验证

// в контроллере
$this->validate($object, $groups)

生成支持 CRUD 的 REST 控制器

执行命令

php bin/console make:rest

API 文档

点击链接 /docs/