2017-09-08 2 views
0

Für den Client diese eine innerhalb von client.yaml istIn Swagger, ist es möglich, mehrere Yaml-Dateien in einer einzigen Datei zu importieren?

/clients: 
    get: 
     tags: 
     - "Clients" 
     description: "List Clients The list capability" 
     produces: 
     - "application/json" 
     parameters: 
     - name: "tenantIdentifier" 
     in: "query" 
     required: true 
     type: "array" 
     items: 
      type: "string" 
      enum: 
      - "default" 
     responses: 
     200: 
      description: "successful operation" 
     400: 
      description: "Invalid status value" 
     security: 
     - basicAuth: [] 
    post: 
     tags: 
     - "Clients" 
     summary: "Create client if address is enabled" 
     description: "" 
     operationId: "addClient" 
     consumes: 
     - "application/json" 
     produces: 
     - "application/json" 
     parameters: 
     - name: "tenantIdentifier" 
     in: "query" 
     description: "" 
     required: true 
     type: "array" 
     items: 
      type: "string" 
      enum: 
      - "default" 
     - in: "body" 
     name: "body" 
     description: "Add what do you wnat to add " 
     required: true 
     schema: 
      allOf: 
      - $ref: '#/definitions/ClientStructure1' 
      - $ref: '#/definitions/ClientStructure2' 
      - $ref: '#/definitions/ClientStructure3' 
     responses: 
     405: 
      description: "Invalid input" 
     security: 
     - basicAuth: [] 

Für den Anwender ist dieser innerhalb von user.yaml

/users: 
    get: 
     tags: 
     - "Users" 
     summary: "Retrieve list of users" 
     produces: 
     - "application/json" 
     parameters: 
     - name: "tenantIdentifier" 
     in: "query" 
     required: true 
     type: "array" 
     items: 
      type: "string" 
      enum: 
      - "default" 
     responses: 
     200: 
      description: "successful operation" 
     400: 
      description: "Invalid status value" 
     security: 
     - basicAuth: [] 
    post: 
     tags: 
     - "Users" 
     summary: "Adds new application user." 
     description: "Note: Password information is not required (or processed). Password details at present are auto-generated and then sent to the email account given (which is why it can take a few seconds to complete)." 
     consumes: 
     - "application/json" 
     produces: 
     - "application/json" 
     parameters: 
     - name: "tenantIdentifier" 
     in: "query" 
     description: "" 
     required: true 
     type: "array" 
     items: 
      type: "string" 
      enum: 
      - "default" 
     - in: "body" 
     name: "body" 
     description: "Mandatory Fields: username, firstname, lastname, email, officeId, roles, sendPasswordToEmail" 
     required: true 
     schema: 
      $ref: "#/definitions/StructureForCreateUSer"   
     responses: 
     400: 
      description: "" 
     404: 
      description: "" 
     security: 
     - basicAuth: [] 
+0

Ich fürchte, Ihre Frage ist nicht klar, verwenden entfernen. Können Sie Beispiele für mehrere YAML-Dateien und die resultierende Datei hinzufügen, die Sie erwarten? Je mehr Details, desto besser. – Helen

+0

Danke für naswer.Für Beispiel habe ich 2 Tags einer von ihnen Benutzer und ein anderes ist Client: "https: // localhost: 8443/fineract-provider/api/v1/benutzer? MandantenIdentifier = default" und "https: // localhost : 8443/funeract-provider/api/v1/client? MandantenIdentifier = default ". Für Client die Operationen Put, Get, Delete und Post schrieb ich in client.yaml und für Benutzer in user.yaml.Now möchte ich sie im Swagger-Editor verbinden. Ist es möglich? – John

+0

Bitte veröffentlichen Sie den Beispielinhalt von client.yaml und user.yaml. – Helen

Antwort

-1

OpenAPI 3 die Verwendung des $ ref Schlüsselwort erlaubt:

https://swagger.io/docs/specification/using-ref/

+1

Das ist falsch. 1) Die '#/definitions/...' -Syntax wird verwendet, um sich auf Datenmodelle in der _same-Datei_ zu beziehen. 2) 'allOf' wird nur in Datenmodellen (Schemas) und nicht in Operationsdefinitionen verwendet. – Helen

+0

Das Beispiel wurde entfernt. Der Link zur Dokumentation sollte ausreichen, um den Benutzer in die richtige Richtung zu lenken. –

1

Sie können nicht $ref ganze Pfade, aber Sie können den Inhalt einzelner p $ref aths. In Ihrem Beispiel können Sie verwenden:

paths: 
    /clients: 
    $ref: clients.yaml#/~1clients 
    /users: 
    $ref: users.yaml#/~1users 

clients.yaml#/~1clients bedeutet nehmen wir die clients.yaml Datei, dann den Inhalt des /clients Knoten in der Datei lesen und die $ref mit, dass Inhalte ersetzen. ~1clients ist /clients mit / Escape als ~1 nach JSON Pointer-Regeln.


die Referenzen zu vereinfachen, können Sie die /clients: und /users: Knoten von Ihren clients.yaml und users.yaml Dateien

# clients.yaml 
get: 
    description: "List Clients The list capability" 
    ... 
post: 
    summary: "Create client if address is enabled" 
    ... 

und dann

paths: 
    /clients: 
    $ref: clients.yaml 
    /users: 
    $ref: users.yaml 
+0

danke. Ich werde auch so versuchen. – John

Verwandte Themen