2017-02-20 4 views
4

Ich habe eine API, die jeder beliebige Pfad ermöglicht alle diese zum Beispiel übergeben, werden:Swagger: Wildcard-Pfad Parameter

  • /api/tags
  • /api/tags/foo
  • /api/tags/foo/bar/baz

Sind gültige Pfade Ich habe versucht, es zu beschreiben, wie folgt:

/tags{tag_path}: 
    get: 
     parameters: 
     - name: tag_path 
      in: path 
      required: true 
      type: string 
      default: "/" 

jedoch https://generator.swagger.io Schrägstriche im Pfad codiert, so dass es nicht funktioniert. Gibt es eine Möglichkeit, meine API in Swagger zu beschreiben?

+0

Wir haben das gleiche Problem - bisher kein Glück! Ich werde hier aktualisieren, wenn wir etwas finden. –

+1

Sieht aus wie dies in Swagger 2.0 (oder sogar 3.0!) Nicht unterstützt wird und es gibt eine große Diskussion darüber, warum hier: https://github.com/OAI/OpenAPI-Specification/issues/892#issuecomment-281170254 Scheint albern, wie es wirklich üblich scheint, dies zu tun. –

+0

Ich habe gerade bemerkt, dass Sie derjenige sind, der das Problem, auf das ich verwiesen habe, geöffnet hat! Haha –

Antwort

1

So wird dies nicht bald unterstützt werden (es ist nicht einmal für Swagger 3.0 geplant), und ich muss auf einen Workaround zurückgreifen.

Wenn ich einen Weg haben /tags{tag_path} und ich geben Sie so etwas wie dies als tag_path: /foo/bar, dann die eigentliche Abfrage Anfrage-URL: /tags%2Ffoo%2Fbar. Also, ich habe nur Unterstützung dafür in meinem Backend hinzugefügt: der Endpunkt-Handler für /tags* urldecodes den Pfad (der %2Ffoo%2Fbar ist), und es wird wieder /foo/bar.

Ja, ein Hack, aber es funktioniert, und es ist besser als nichts. In meinem Fall können Tag-Namen das / Zeichen nicht enthalten, also gibt es keinen Konflikt. Ihre Laufleistung kann natürlich variieren.

Verwandte Themen