valantic/pimcore-api-documentation

自动生成路由的API文档

0.6.3 2024-07-04 08:12 UTC

README

Latest Version on Packagist Software License PHP Checks

此包由valantic CEC Schweiz 开发,并处于积极开发中。

Bundle 用于根据API控制器生成API文档。

要求

  • Pimcore >= 11.0.0

安装

  1. composer require valantic/pimcore-api-documentation
  2. ValanticPimcoreApiDocumentationBundle 添加到 config/bundles.php

使用

class ProductController implements \Valantic\PimcoreApiDocumentationBundle\Http\Controller\ApiControllerInterface
{
    use \Valantic\PimcoreApiDocumentationBundle\Controller\ApiControllerTrait;

    #[Route(path: '/product', name: 'rest_api_product_create', methods: Request::METHOD_POST)]
    public function create(ProductCreateRequest $request): ProductCreateResponse|\Valantic\PimcoreApiDocumentationBundle\Http\Response\BadRequestResponse
    {
        $errors = $this->validateRequest($request);

        if (count($errors) !== 0) {
            return new \Valantic\PimcoreApiDocumentationBundle\Http\Response\BadRequestResponse($errors);
        }

        return new ProductCreateResponse(/* ... */);
    }
}

use Symfony\Component\Validator\Constraints as Assert;

class ProductCreateRequest implements \Valantic\PimcoreApiDocumentationBundle\Http\Request\Contracts\HasJsonPayload
{
    #[Assert\NotBlank]
    public ?string $name = null;

    #[Assert\NotBlank]
    public ?string $description = null;
}

class ProductCreateResponse implements \Valantic\PimcoreApiDocumentationBundle\Http\Response\ApiResponseInterface
{
    public static function status(): int
    {
        return \Symfony\Component\HttpFoundation\Response::HTTP_CREATED;
    }

    public static function getDtoClass(): string|false
    {
        return ProductCreateDto::class;
    }
}

class ProductCreateDto
{
    public function __construct(
        public ?int $id,
    ) {}
}