OpenAPITools / OpenAPITools/openapi-generator

[bug][symfony] AnyType is not defined

Offen
#17,618 0 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Issue: Bug
Vorherrschende Sprache
Java
Sterne
26.8k
Forks
7.7k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug Report Checklist
  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

AnyType is not defined in symfony server generated code.
In some situations, schemas return any, this is handled in other languages where that is translated into something the language understands, examples:

  • Java: Object
  • C#: `Object
  • Rust: serde_json:Value

However, this translation is not made for symfony, and the generators write AnyType in such situations, leading to type errors:
AnyType is not defined anywhere.

image

openapi-generator version

7.2.0

some_data:
      type: object
      additionalProperties: true

or

some_data:
      type: object
      additionalProperties: {}

when a request is made with some data , this exception is thrown by JMSSerializer in vendor/jms/metadata/src/MetadataFactory.php

curl --location --request POST 'http://localhost:8000/myservice' \
--header 'Content-Type: application/json' \
--data-raw '{
  "some_data": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  }
}'

Uncaught PHP Exception ReflectionException: "Class "AnyType" does not exist" at MetadataFactory.php line 175

image

Generation Details
openapi-generator-cli \                        
    generate \
    -i openapi.yaml \
    -g php-symfony \
    -o .
Steps to reproduce
Related issues/PRs

its the same issue as this one was for typescript https://github.com/OpenAPITools/openapi-generator/issues/6332

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie damit, den bereitgestellten openapi-generator-Befehl mit dem php-symfony-Generator und dem Beispielschema unter Verwendung von additionalProperties auszuführen. Verfolgen Sie den generierten Typ durch die Anfrageverarbeitung bis zu vendor/jms/metadata/src/MetadataFactory.php. Die Aufgabe ist abgeschlossen, wenn der generierte Symfony-Code nicht mehr auf einen undefinierten AnyType verweist und das gezeigte POST-Payload erfolgreich verarbeitet werden kann.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php, symfony
Bereich
api, backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.