IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

requêtes de requêtes pour obtenir des données sur api Paltform avec React


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut requêtes de requêtes pour obtenir des données sur api Paltform avec React
    Bonjour,

    je tente de récupérer des données de ma BDD en faisant des requêtes avec React.
    donc des requêtes du genre: "/api/table"
    Mon entité est liée à d'autres tables, du coup, certains champs ne contiennent pas directement la valeur mais une url du genre:
    "/api/autretable/id"Et je dois faire une autre requête pour récupérer la valeur.

    Je trouve ça assez tordu ! Si j'ai 15 champs , 15 requêtes ( une boucle, à condition de pouvoir identifier les champs en question...)
    Il doit y avoir plus simple: Symfony et API Platform sont pensés pour faciliter le travail.
    Donc je pense que je ne m'y prends pas correctement.

    Si quelqu'un pouvait m'orienter.
    Merci d'avance,

    Laurent.

  2. #2
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Bonsoir, il te faut créer des groupes de sérialisation et définir quels champs de ton entité liée tu veux recupérer. https://api-platform.com/docs/core/serialization/

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut
    Merci, je suis dessus depuis cet après-midi ( en fait j'ai compris ça après avoir posté mon message ! ):
    pour l'instant une simple normalisation sur les champs dont j'ai besoin me convient.

    Je vais continuer à avancer

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 275
    Points : 113
    Points
    113
    Par défaut
    Bonjour,

    Finalement, ça clignote:
    avec @ApiResource(normalizationContext={"groups": "animals:read"})dans mon entité principale, j'ai un get/id du genre:
    Code json : 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
     
    @context": "string",
      "@id": "string",
      "@type": "string",
      "diets": {
        "@context": "string",
        "@id": "string",
        "@type": "string",
        "id": 0,
        "dietsName": "string"
      },
      "species": {
        "@context": "string",
        "@id": "string",
        "@type": "string",
        "id": 0,
        "speciesName": "string"
      },
      "continents": [
        {
          "@context": "string",
          "@id": "string",
          "@type": "string",
          "id": 0,
          "continentsName": "string"
        }
      ]
    }

    qui me convient bien: je pourrai récupérer le nom des espèces, leur régime, ... qui proviennent d'autres entités !
    Par contre, le post:
    Code json : 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
     
    {
      "commonName": "string",
      "diets": {
        "dietsName": "string",
        "animals": [
          "string"
        ]
      },
      "species": {},
      "population": [
        "string"
      ],
      "continents": [
        {
          "continentsName": "string",
          "animals": [
            "string"
          ]
        }
      ]
    }

    Pas bon, je ne peux pas rentrer les iri ( /url ) du genre "api/table/id"
    Je rajoute un denormalizationContext={"groups": "animals:read"}
    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    {
      "commonName": "string",
      "diets": {
        "dietsName": "string"
      },
      "species": {
        "speciesName": "string"
      },
      "continents": [
        {
          "continentsName": "string"
        }
      ]
    }

    Un peu mieux: les clés "animals" ont disparues et tant mieux , je n'en voulais pas.
    Je tente sur la Doc de symfony: #[ApiProperty(readableLink: false, writableLink: false)] pour forcer les iri
    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    {
      "commonName": "string",
      "diets": "string",
      "species": "string",
      "continents": [
        "string"
      ]
    }
    Superbe, mais du coup le get:
    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    {
      "@context": "string",
      "@id": "string",
      "@type": "string",
      "id": 0,
      "commonName": "string",
      "diets": "string",
      "species": "string",
      "continents": [
        "string"
      ]
    }

    Quelque chose cloche, on ne peut pas forcer les iri uniquement sur le post ?

    Je vais continuer mes investigations: api platForm ne peut pas fonctionner comme ça !

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2010, 21h50
  2. Réponses: 2
    Dernier message: 14/01/2009, 09h48
  3. Requête pour ajouter des données
    Par parasol007 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/07/2008, 11h31
  4. Requête pour filtrer des données
    Par altecad dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/02/2008, 14h16
  5. [MySQL] rejoindre deux requêtes pour afficher des données
    Par schats dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/12/2007, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo