peedro07 / symfony-api-rest-bundle
此包与Symfony结合使用,可以更轻松地管理您数据的渲染
1.5.0
2024-07-16 08:56 UTC
Requires
- php: ^8.2
- symfony/dependency-injection: ^7.0
- symfony/event-dispatcher: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/http-foundation: ^7.0
- symfony/http-kernel: ^7.0
- symfony/serializer: ^7.0
README
简化Symfony API创建的包
2.0版本的包与Symfony 7.x.x兼容
此包通过方便的注解简化了API的开发。它需要扩展AbstractPGTRest。
入门
首先,在控制器中扩展此包
class UserController extends AbstractPGTRest
确保通过调用父构造函数初始化responseOptionsService
parent::__construct($responseOptionsService);
示例用法
通过一个示例利用此包
//UserEntity use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Attribute\Groups; #[Groups(["user:read"])] // Initialize the group for serialization #[ORM\Column(length: 255)] private ?string $name = null;
//UserController use App\Repository\UserRepository; use PGTRest\Attribute\ResponseOptions; use PGTRest\Controller\AbstractPGTRest; use PGTRest\Service\ResponseOptionsService; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; public function __construct(ResponseOptionsService $responseOptionsService) { parent::__construct($responseOptionsService); } #[Route('/users', name: 'app_users_get', methods: ["GET"])] #[ResponseOptions(statusCode: 200, groups: ["user:read"], formatDate: 'Y-m-d']) // Set the response options with the desired status code and serialization group public function index(UserRepository $userRepository): Response { $users = $userRepository->findAll(); return $this->view($users); //option 1 //return $this->view(['all_users' => $users]); option 2 }
//option 1 { "users": [ { "name": "John" }, { "name": "Jane" } ] }
//option 2 { "all_users": [ { "name": "John" }, { "name": "Jane" } ] }
注意:视图方法接受一个数据数组以及可选的$statusCode和$groups参数
其他功能
当设置formatDate选项时,此包将根据指定的格式格式化响应中的日期字段。
#[ResponseOptions(statusCode: 200, groups: ["user:read"], formatDate: 'Y-m-d'])