2017-02-20 98 views
4

我有所有這些的API,它允許任意路徑傳遞中,例如:揚鞭:通配符路徑參數

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

是有效的路徑。我試過如下來形容它:

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

然而,https://generator.swagger.io編碼斜線的路徑,所以這是行不通的。那麼有沒有辦法在Swagger中描述我的API?

+0

我們有同樣的問題 - 到目前爲止沒有運氣!如果我們找到任何東西,我會在這裏更新 –

+1

看起來像Swagger 2.0(甚至3.0!)不支持這個功能,這裏有一個關於爲什麼在這裏的大討論:https://github.com/OAI/OpenAPI-Specification/issues/892#issuecomment-281170254 似乎愚蠢,因爲這似乎很常見。 –

+0

我剛剛注意到你是打開我引用的問題的人!哈哈 –

回答

1

所以這不會很快得到支持(它甚至沒有計劃Swagger 3.0),我不得不求助於解決方法。

如果我有一個路徑/tags{tag_path}和我進入這樣的事情作爲tag_path/foo/bar,那麼實際的查詢請求的網址爲:/tags%2Ffoo%2Fbar。所以,我只是在後端添加了對它的支持:/tags* urldecode代碼的路徑(%2Ffoo%2Fbar),它又變成/foo/bar

是的,黑客,但它的工作原理,它總比沒有好。就我而言,標籤名稱不能包含/字符,所以沒有衝突。當然,你的里程可能會有所不同。