stfalcon-studio/api-bundle

通过Symfony构建API应用程序的基础类和辅助服务。

安装次数: 18,694

依赖项: 0

建议者: 0

安全: 0

星标: 11

关注者: 4

分支: 6

开放问题: 1

类型:symfony-bundle


README

📦 通过Symfony构建API应用程序的基础类和辅助服务。

Scrutinizer Quality Score Build Status CodeCov License Latest Stable Version Total Downloads StyleCI

安装

composer req stfalcon-studio/api-bundle

如果你想使用JWT认证,请添加以下依赖项

composer req gesdinet/jwt-refresh-token-bundle
composer req lexik/jwt-authentication-bundle

检查config/bundles.php文件

默认情况下,Symfony Flex会将此捆绑包添加到config/bundles.php文件中。如果在捆绑包安装过程中忽略了contrib-recipe,则不会添加。在这种情况下,请手动添加捆绑包。

# config/bundles.php

return [
    // Other bundles...
    StfalconStudio\ApiBundle\StfalconApiBundle::class => ['all' => true],
    // Other bundles...
];

设置步骤

将映射添加到Doctrine ORM配置中

doctrine:
  orm:
    mappings:
      StfalconApiBundle: ~

设置JSON模式目录

默认目录是./src/Json/Schema/。或者您可以通过捆绑包配置来更改它。

stfalcon_api:
  api_host: '%env(APP_API_HOST)%'
  json_schema_dir: '%kernel.project_dir%/src/Json/Schema/'
  jwt:
    enabled: true # set false to disable JWT auth 
    redis_client_jwt_black_list: "@snc_redis.jwt_black_list"

使用方法

字典枚举

对于简单的字典枚举,您可以在枚举上使用DictionaryEnumInteface接口。它将像字典一样进行注册,因此结果将如下所示

{
  "id": 1,
  "value": "Enum name"
}

因此,现在字典操作将看起来像这样

#[Route(path: '/foo/bar', name: 'foo_bar', methods: [Request::METHOD_GET])]
public function __invoke(): JsonResponse
{
    // ...

    return new JsonResponse(data: $this->serializer->serialize(FooBar::cases()), json: true);
}

在某些情况下,您可能需要将字典值序列化为非字典形式,为此只需在上下文参数中添加default_normalization并赋予任何值。

$this->serializer->serialize($fooBar, 'json', ['default_normalization' => true]);

贡献

阅读CONTRIBUTING文件。