OpenAPI vers GraphQL SDL
GraphQL Schema Synthesis

Convertisseur OpenAPI / Swagger vers GraphQL SDL Schema

Convertissez les points de terminaison REST, corps de requête et schémas JSON OpenAPI 3.0/3.1 et Swagger 2.0 en types, requêtes, mutations et entrées GraphQL SDL.

Confidentialité 100% côté client
Zéro transmission au serveur
Préréglages :
SDL Options:
Spécification OpenAPI / Swagger (YAML / JSON)OpenAPI 3.x (YAML)
# ==============================================================================
# GraphQL SDL Schema synthesized from OpenAPI / Swagger
# Title: Swagger Petstore (1.0.0)
# Base Server: https://petstore3.swagger.io/api/v3
# Generated by ToolsAA 100% Client-Side Engine
# ==============================================================================


"""ISO-8601 compliant datetime representation"""
scalar DateTime

"""Arbitrary unstructured JSON object data"""
scalar JSON


schema {
  query: Query
  mutation: Mutation
}


type Query {
  # --- Pets ---
  """List all pets"""
  listPets(status: ListPetsStatusEnum, limit: Int): [Pet!]!

  """Find pet by ID"""
  getPetById(petId: ID!): Pet!
}


type Mutation {
  # --- Pets ---
  """Create a pet"""
  createPet(input: NewPetInput!): Pet!

  """Update an existing pet"""
  updatePet(petId: ID!, input: NewPetInput!): Pet!

  """Deletes a pet"""
  deletePet(petId: ID!): Boolean!
}


enum NewPetStatusEnum {
  AVAILABLE
  PENDING
  SOLD
}


enum PetStatusEnum {
  AVAILABLE
  PENDING
  SOLD
}


enum ListPetsStatusEnum {
  AVAILABLE
  PENDING
  SOLD
}


type Category {
  id: ID!
  name: String!
}


type Tag {
  id: ID!
  name: String!
}


type NewPet {
  name: String!
  category: Category
  photoUrls: [String!]!
  tags: [Tag!]
  status: NewPetStatusEnum
}


type Pet {
  id: ID!
  name: String!
  category: Category
  photoUrls: [String!]!
  tags: [Tag!]
  status: PetStatusEnum!
  createdAt: DateTime
}


input CategoryInput {
  id: ID!
  name: String!
}


input TagInput {
  id: ID!
  name: String!
}


input NewPetInput {
  name: String!
  category: CategoryInput
  photoUrls: [String!]!
  tags: [TagInput!]
  status: NewPetStatusEnum
}
5
Endpoints REST Traités
10
Types GraphQL & Inputs
1.7 KB
Taille Estimée du SDL

Confidentialité 100% Côté Client

Toutes vos spécifications d'API et structures de données sont converties localement dans la mémoire de votre navigateur sans aucun transfert réseau.

Synthèse Complète GraphQL SDL

Convertit automatiquement les GET en queries, les POST/PUT/DELETE en mutations fortement typées et les schémas JSON en types GraphQL.

Prêt pour Apollo, Yoga et Relay

Génère du code GraphQL SDL conforme aux standards pour Apollo Server, GraphQL Yoga, Hasura et GraphQL Code Generator.

Référence technique et guide d'architecture

Guide Développeur : Convertisseur OpenAPI / Swagger vers GraphQL SDL — Guide de référence

Convertissez les points de terminaison REST, corps de requête et schémas JSON OpenAPI 3.0/3.1 et Swagger 2.0 en types, requêtes, mutations et entrées GraphQL SDL.

Paramètres clés et contrôles

operationMapping'query-mutation' | 'query-only'

Contrôle si les opérations REST sont réparties entre Query et Mutation ou restreintes exclusivement à Query.

Par défaut : 'query-mutation'
inputNamingConvention'suffix-input' | 'prefix-input' | 'exact'

Définit la convention de nommage des types d'objets input générés à partir des corps de requête HTTP.

Par défaut : 'suffix-input'
idFieldMapping'ID' | 'String' | 'Int'

Définit le type scalaire GraphQL cible pour les paramètres d'URL et les identifiants d'entité.

Par défaut : 'ID'
nullableMode'strict-non-null' | 'optional'

Détermine si les propriétés requises et les paramètres de chemin OpenAPI reçoivent le modificateur non-nul (!).

Par défaut : 'strict-non-null'
customScalars'enabled' | 'string-only'

Génère des déclarations de scalaires personnalisés GraphQL (DateTime, UUID, JSON) pour les formats de chaînes OpenAPI.

Par défaut : 'enabled'

Conseils de pro et bonnes practices

Générer des types Input dédiés

GraphQL interdit l'utilisation directe des types d'objets de sortie (type) comme arguments de mutation. Générez toujours des types 'Input' dédiés pour les corps de requête OpenAPI.

Directives @rest personnalisées

Ajoutez des directives personnalisées telles que @rest(path: "/users/{id}", method: "GET") pour faciliter la résolution d'API via Apollo Server RESTDataSource ou GraphQL Mesh.

Convertir oneOf en types union

Traduisez les schémas oneOf dotés d'un discriminateur en types union GraphQL. Enveloppez les types primitifs dans des objets synthétiques, GraphQL n'acceptant que des objets dans les unions.

Dédupliquer les modèles partagés

Résolvez les schémas définis dans '#/components/schemas' en types GraphQL de premier niveau pour éviter les doublons de définitions entre les différents points de terminaison.

Pièges courants et dépannage

Collision de noms entre le corps de requête et le modèle de réponse

Activez le suffixe 'Input' (ex: 'CreateUserInput') afin d'isoler les types d'entrée des types de sortie partageant le même identifiant de schéma OpenAPI.

Erreur de validation sur les scalaires primitifs dans un schéma oneOf ou anyOf

Les unions GraphQL n'acceptent pas les scalaires primitifs comme String ou Int. Encapsulez ces variantes dans des types d'objets intermédiaires avec un champ 'value'.

Absence de réponse 200/201 provoquant une erreur de syntaxe sur le type retourné

Assurez-vous que chaque opération OpenAPI dispose d'au moins un schéma de réponse 2xx valide ou fournissez un type de réponse générique par défaut.

Foire aux questions (FAQ)

Comment les méthodes HTTP REST sont-elles associées aux types racines GraphQL ?▼

Les requêtes GET sont converties en champs Query. Les méthodes POST, PUT, PATCH et DELETE sont transformées en champs Mutation, avec les paramètres de route et de requête passés en arguments typés.

Comment les composants $ref d'OpenAPI sont-ils résolus dans le schéma GraphQL SDL ?▼

Les modèles partagés dans components/schemas ou definitions sont automatiquement convertis en types et inputs GraphQL réutilisables, éliminant les redondances dans le schéma généré.

Le convertisseur prend-il en charge le polymorphisme OpenAPI (oneOf et anyOf) ?▼

Oui. Les schémas oneOf basés sur des objets avec discriminateur sont convertis en unions ou interfaces GraphQL. Les unions contenant des scalaires sont encapsulées dans des types d'objets dédiés.

Ma spécification OpenAPI est-elle envoyée à un serveur externe ?▼

Non. L'analyse du schéma, la transformation en AST et la génération du SDL GraphQL sont exécutées à 100 % localement dans la mémoire de votre navigateur. Aucune donnée n'est transmise.

Quels serveurs et frameworks GraphQL sont compatibles avec le SDL généré ?▼

Le schéma respecte la spécification officielle GraphQL (octobre 2021 et versions ultérieures) et s'intègre directement avec Apollo Server, GraphQL Yoga, AWS AppSync, Nexus et GraphQL Mesh.

Outils et utilitaires connexes

Tous les outils →
Guide développeur du générateur de schémas TypeScript TypeBox depuis SQL DDLDéveloppement

Convertissez les instructions SQL CREATE TABLE en schémas de validation à l'exécution @sinclair/typebox utilisant Type.Object, Type.String, Type.Number et Type.Optional.

Ouvrir l'outil→
Guide Développeur du Générateur de Code cURL vers Rust (reqwest & tokio)Développement

Convertissez des commandes cURL en requêtes HTTP asynchrones et idiomatiques en Rust à l'aide de reqwest, serde_json, d'en-têtes personnalisés et du runtime Tokio.

Ouvrir l'outil→
Guide développeur du générateur de code cURL vers Ruby (Net::HTTP & Faraday)Développement

Convertissez vos requêtes cURL en code Ruby propre et idiomatique avec Net::HTTP, URI, Faraday et la gestion native du JSON.

Ouvrir l'outil→
Générateur de NetworkPolicy K8S Guide DéveloppeurDéveloppement

Référence technique pour générer des manifestes Kubernetes NetworkPolicy déclaratifs, l'isolation de pods zero-trust, les règles d'ingress/egress, les blocs CIDR et les ports multiples.

Ouvrir l'outil→
Guide Développeur : Générateur YAML Kubernetes RBAC Role & ClusterRoleBindingDéveloppement

Concevez des manifestes Kubernetes RBAC pour Role, ClusterRole, RoleBinding et ClusterRoleBinding avec groupes d'API, verbes de ressources et comptes de service.

Ouvrir l'outil→
Guide du Développeur du Générateur de YAML Kubernetes StatefulSet & Headless ServiceDéveloppement

Générez des manifestes Kubernetes StatefulSet de qualité production avec Headless Service associé, volumeClaimTemplates persistants, réplicas et podManagementPolicy.

Ouvrir l'outil→