Simple API server with SF4

Wilcome

Mise en place :

Initialisation projet Symfony

  1. Récupération Symfony skeleton
composer create symfony/skeleton
cd skeleton
  1. Init du git.
git init
  1. Lancement du serveur
php -S 127.0.0.1:8000 -t public

Test de mon app en allant depuis mon navigateur sur l'URL définie juste avant : http://127.0.0.1:8000.

Ok !

Gestion des entités

  1. Récupération des outils ORM et générations
composer require symfony/orm-pack
composer require symfony/maker-bundle
  1. Récupération de l'outil API Platform
composer require api
  1. Configuration et création de la DB
nano .env

et personnaliser la ligne pour la rendre conforme à vos besoins :

DATABASE_URL=mysql://username:password@127.0.0.1:3306/database_name
bin/console doctrine:database:create
bin/console doctrine:schema:create 
  1. Génération de mes entités
php bin/console make:entity // Et suivre les étapes pas à pas pour chaque entités necessaires.
  1. Répercutions de mes entités sur la DB.
php bin/console make:migration
php bin/console doctrine:migrations:migrate

À ce stade, je peux tester mon appli, j'ai accès à la doc d'api depuis mon navigateur : http://localhost:8000/api

It works

  1. Remplissage de la DB

    6.1. Récupération des librairies

composer require --dev doctrine/doctrine-fixtures-bundle
composer require fzaninotto/faker
6.2. Création des *data-seed*
mkdir src/DataFixtures
touch src/DataFixtures/AppFixtures
nano src/DataFixtures/AppFixtures
<?php

namespace App\DataFixtures;

use App\Entity\Article;
use App\Entity\Category;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Faker;

// /project/src/DataFixtures/AppFixtures.php
class AppFixtures extends Fixture
{


    public function load(ObjectManager $manager)
    {

        $faker = Faker\Factory::create();

        for ($i = 0; $i < 10; $i++) {
            $category = new Category();
            $category->setName($faker->sentence());

            for ($i2= 0; $i2 < $i; $i2++) {
                $article = new Article();
                $article->setTitle($faker->sentence());
                $article->setContent($faker->paragraph());
                $article->setCategory($category);
                $article->setAuthor($faker->name);
                $manager->persist($article);
            }
            $manager->persist($category);
        }

        $manager->flush();
    }
}
bin/console doctrine:fixtures:load

À ce stade, je peux tester mon appli, j'ai toujours accès à la doc d'api depuis mon navigateur : http://localhost:8000/api Depuis postman : http://localhost:8000/api, j'ai accès à mon API !

It works

Création de l'espace d'admin

  1. Récupération de la lib admin-easybundle
composer require admin
  1. Configuration des entités à Admin
nano config/packages/easy_admin.yaml
bin/console debug:router
  1. Debbug des entités
nano src/Entity/Article.php
nano src/Entity/Category.php

Testons

It works

  1. Configuration de l'internationalisation
nano config/packages/translation.yaml
composer require symfony/translation
nano config/packages/translation.yaml
bin/console cache:clear

Final

Y a plus qu'a test !

Awesome

Ressources :