web-dev-qa-db-fra.com

Comment définir la propriété UUID dans le schéma JSON et l'API ouverte (OAS)

Lors de l'utilisation de Schéma JSON et Spécification API ouverte (OAS) pour documenter une API REST, comment définir la UUID propriété?

9
Slava Fomin II

Il n'y a pas de type intégré pour UUID, mais la spécification OpenAPI suggère d'utiliser

type: string
format: uuid

De la section Types de données (accentuation du mien):

Les primitives ont une propriété de modification facultative: format. OAS utilise plusieurs formats connus pour définir en détail le type de données utilisé. Cependant, pour prendre en charge les besoins de documentation, la propriété format est une propriété de chaîne ouverte et peut avoir n'importe quelle valeur. Formats tels que "email", "uuid", et ainsi de suite, PEUT être utilisé même s'il n'est pas défini par cette spécification.

Par exemple, Swagger Codegen mappe format: uuid à System.Guid en C # ou Java.util.UUID en Java. Outils qui ne prennent pas en charge format: uuid le traitera comme _ type: string.

13
Helen

La seule façon que j'ai trouvée jusqu'à présent est de spécifier manuellement le modèle RegEx en tant que composant de schéma réutilisable:

openapi: 3.0.1

paths:
  /transactions/:
    post:
      responses:
        200:
          content:
            application/json:
              schema:
                type: object
                properties:
                  transactionId:
                    $ref: '#/components/schemas/uuid'

components:
  schemas:
    uuid:
      type: string
      pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'

Mais, je voudrais certainement utiliser une approche plus standardisée.

6
Slava Fomin II