https://github.com/stfalcon-studio/apibundle
:package: Base classes and helper services to build API application via Symfony.
https://github.com/stfalcon-studio/apibundle
api bundle php rest stfalcon symfony symfony-bundle
Last synced: 10 months ago
JSON representation
:package: Base classes and helper services to build API application via Symfony.
- Host: GitHub
- URL: https://github.com/stfalcon-studio/apibundle
- Owner: stfalcon-studio
- License: mit
- Created: 2020-04-22T17:36:13.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2024-07-24T10:01:07.000Z (almost 2 years ago)
- Last Synced: 2025-08-20T06:48:45.148Z (11 months ago)
- Topics: api, bundle, php, rest, stfalcon, symfony, symfony-bundle
- Language: PHP
- Homepage: https://github.com/stfalcon-studio/ApiBundle
- Size: 348 KB
- Stars: 10
- Watchers: 3
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Security: Security/AnonymousUser.php
Awesome Lists containing this project
README
# ApiBundle
:package: Base classes and helper services to build API application via Symfony.
[](https://scrutinizer-ci.com/g/stfalcon-studio/ApiBundle/)
[](https://github.com/stfalcon-studio/ApiBundle/actions?query=workflow%3ACI+branch%3Amain+)
[](https://codecov.io/github/stfalcon-studio/ApiBundle)
[](https://packagist.org/packages/stfalcon-studio/api-bundle)
[](https://packagist.org/packages/stfalcon-studio/api-bundle)
[](https://packagist.org/packages/stfalcon-studio/api-bundle)
[](https://styleci.io/repos/257974142)
## Installation
```
composer req stfalcon-studio/api-bundle
```
Add next dependencies if you want to use JWT auth
```
composer req gesdinet/jwt-refresh-token-bundle
composer req lexik/jwt-authentication-bundle
```
#### Check the `config/bundles.php` file
By default, Symfony Flex adds this bundle to the `config/bundles.php` file.
In case when you ignored `contrib-recipe` during bundle installation it would not be added. In this case add the bundle manually.
```php
# config/bundles.php
return [
// Other bundles...
StfalconStudio\ApiBundle\StfalconApiBundle::class => ['all' => true],
// Other bundles...
];
```
## Set Up Steps
#### Add mappings to Doctrine ORM config
```yaml
doctrine:
orm:
mappings:
StfalconApiBundle: ~
```
#### Set up a directory for JSON schemas
The default directory is `./src/Json/Schema/`. Or you can change it via bundle configuration.
```yaml
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"
```
# Usage
## Dictionary enums
For simple dictionary enums, you can use the `DictionaryEnumInteface` interface on Enums.
It will register for serialization like a dictionary, so the result will be like:
```json
{
"id": 1,
"value": "Enum name"
}
```
So, now the dictionary action will look like:
```php
#[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);
}
```
In some cases, you may need to serialise dictionary value not as dictionary, for this just add in context parameter `default_normalization` with any value.
```php
$this->serializer->serialize($fooBar, 'json', ['default_normalization' => true]);
```
## Contributing
Read the [CONTRIBUTING](https://github.com/stfalcon-studio/ApiBundle/blob/main/.github/CONTRIBUTING.md) file.