===== Symfony Api Platform =====
==== links ====
* https://api-platform.com/docs/distribution/#using-symfony-flex-and-composer-advanced-users
* https://symfony.com/doc/current/doctrine.html
* https://www.kaherecode.com/tutorial/developper-une-api-rest-avec-symfony-et-api-platform
==== quick ====
composer create-project symfony/skeleton bookshop-api
cd bookshop-api
composer require symfony/orm-pack
composer require --dev symfony/maker-bundle
composer req api
fill .env with database infos and then
bin/console doctrine:database:create
bin/console make:entity
#bin/console doctrine:schema:create
bin/console make:migration
bin/console doctrine:migrations:migrate
run test server
php -S 192.168.0.124:8000 -t public
frontend available at http://192.168.0.124:8000/api
==== notes ====
=== adding some infos ===
add title, description and version.
in config/packages/api_platform.yaml
api_platform:
title: "toto"
description: "ben voila"
version: "1.0"
mapping:
paths: ['%kernel.project_dir%/src/Entity']
patch_formats:
json: ['application/merge-patch+json']
swagger:
versions: [3]
==== disable operations ====
in entity class header
* @ApiResource(
* collectionOperations={"get"},
* itemOperations={"get", "put", "delete"}
* )
==== read/write properties ====
in entity class header
* normalisation = from server to client
* denormalisation = from client to server
/**
* @ApiResource(
* normalizationContext={"groups"={"article:read"}},
* denormalizationContext={"groups"={"article:write"}}
* )
* @ORM\Entity(repositoryClass="App\Repository\ArticleRepository")
*/
class Article
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*
* @Groups("article:read")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*
* @Groups({"article:read", "article:write"})
*/
private $title;
{{tag>symfony php}}