Bonjour à vous tous,

Pour un de mes projets, j'utilise Symfony 5.2 et Api Platform 2.6 en tant que back-end. Le front-end est développé en Node.js et Express.

L'API fonctionne très bien pour les fonctions GET, POST, PUT .... Mais de façon unitaire.
J'ai besoin d'envoyer en masse des données à l'API via une route POST. En gros je veux lui envoyer un tableau d'objet en JSON et que l'API désérialise et intègre en BDD tous les objets.

En lisant la documentation officielle et le git du projet Api platform, il n'y a pas de possibilité "out of box" de faire cela.
J'ai lu plusieurs pistes comme le DTO, controller particulier ... Je m'y pert.

Quelqu'un pourrait-il m'aider à concevoir une route pour faire un import en masse ?

Mon entité sur laquelle je souhaite faire un import en masse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
 
namespace App\Entity;
 
use App\Repository\PosteSourceRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Annotation\ApiSubresource;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use App\Controller\PosteSourceMultiController;
 
/**
 * @ApiResource(
 *  normalizationContext={"groups"={"postesource:lire"}},
 *  denormalizationContext={"groups"={"postesource:ecrire"}},
 * )
 * @ORM\Entity(repositoryClass=PosteSourceRepository::class)
 * @UniqueEntity(
 *  fields="nom",
 *  message="Le poste source existe déjà."
 * )
 */
class PosteSource
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     * @Groups({"postesource:lire"})
     */
    private $id;
 
    /**
     * @ORM\Column(type="string", length=20)
     * @Groups({"postesource:lire", "postesource:ecrire"})
     */
    private $nom;
 
    /**
     * @ORM\Column(type="string", length=50)
     * @Groups({"postesource:lire", "postesource:ecrire"})
     */
    private $departement;
 
    /**
     * @ORM\OneToMany(targetEntity=Omt::class, mappedBy="posteSource", orphanRemoval=true)
     * @Groups({"postesource:lire"})
     * @ApiSubresource
     */
    private $omt;
 
    public function __construct()
    {
        $this->omt = new ArrayCollection();
    }
 
    public function getId(): ?int
    {
        return $this->id;
    }
 
    public function getNom(): ?string
    {
        return $this->nom;
    }
 
    public function setNom(string $nom): self
    {
        $this->nom = $nom;
 
        return $this;
    }
 
    public function getDepartement(): ?string
    {
        return $this->departement;
    }
 
    public function setDepartement(string $departement): self
    {
        $this->departement = $departement;
 
        return $this;
    }
 
    /**
     * @return Collection|Omt[]
     */
    public function getOmt(): Collection
    {
        return $this->omt;
    }
 
    public function addOmt(Omt $omt): self
    {
        if (!$this->omt->contains($omt)) {
            $this->omt[] = $omt;
            $omt->setPosteSource($this);
        }
 
        return $this;
    }
 
    public function removeOmt(Omt $omt): self
    {
        if ($this->omt->removeElement($omt)) {
            // set the owning side to null (unless already changed)
            if ($omt->getPosteSource() === $this) {
                $omt->setPosteSource(null);
            }
        }
 
        return $this;
    }
}
Merci beaucoup de votre aide