silasyudi/restboot-bundle

一组注解,使使用 Symfony 开发 Rest API 更加容易和快速。

安装次数: 1,077

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

v3.0.0 2023-06-29 03:06 UTC

This package is auto-updated.

Last update: 2024-09-29 06:20:30 UTC


README

Tests Maintainability Test Coverage

Symfony 包,用于加速 Rest API 的开发。

摘要

语言 / Idioma

阅读葡萄牙语版本 🇧🇷 这里

安装

composer require silasyudi/restboot-bundle

要求

  • PHP 7.4+
  • Composer
  • Symfony 4.4+ / 5+
  • Doctrine 2+

功能

在控制器方法中将有效负载转换为对象

使用 @Body 和 @Query 注解,您可以在控制器方法中自动将有效负载和查询转换为对象。

没有 RestBoot 的示例

/**
 * Payload converted with some serializer
 * @Route("/myAction", methods={"POST"}) 
 */
public function __invoke(Request $request, SerializerInterface $serializer)
{
    $myObject = $serializer->deserialize(
        $request->getContent(),
        MyObject::class,
        'json'
    );
    ...

带有 RestBoot 的示例

use SilasYudi\RestBootBundle\Rest\Annotation\Body;

/**
 * Payload converted with @Body annotation
 * @Route("/myAction", methods={"POST"})
 * @Body("myObject")
 */
public function __invoke(MyObjectDTO $myObject)
{
    ...

轻松管理 Doctrine 事务

使用 @Transaction 注解,您可以减少 Doctrine 事务管理的冗长性。

没有 RestBoot 的示例

/**
 * @Route("/myAction", methods={"POST"}) 
 */
public function __invoke()
{
    $connection = $this->getDoctrine()->getConnection(); 

    try {
        $connection->beginTransaction();
            
        $this->service->someAction();

        if ($connection->isTransactionActive()) {
            $connection->commit();
        }
    } catch (SomeException $exception) {
        if ($connection->isTransactionActive()) {
            $connection->rollback();
        }
    }

    ...

带有 RestBoot 的示例

use SilasYudi\RestBootBundle\Transaction\Annotation\Transaction;

...

/**
 * @Route("/myAction", methods={"POST"})
 * @Transaction("myConnection")
 */
public function __invoke()
{
    $this->service->someAction();
    ...

文档

英语 🇺🇸

葡萄牙语 🇧🇷