2015-03-31 70 views
3

我想與大家分享我的想法有關https://github.com/swagger-api/swagger-node-express揚鞭節點快車使用

它在Github上564分,所以我認爲這是證明使用它,但:

  • 爲什麼要我使用addGet/addPost之類的方法並通過HTTP方法拆分我的控制器
  • 爲什麼我應該將模型引入路由?
  • 我可以使用驗證器進行驗證,但我必須選擇一些路徑,應該在那裏保護。它複製logic,存儲在swagger json文件中。

是不是正確的方式有一個靜態swagger.json和生成Express路線呢? 或者,也許我不明白一些實踐

回答

6

Swagger只是一個規格。你可以手工製作一個沒有任何代碼的swagger規範,將規範提供給一個符合swagger-ui標準的頁面,並且它「將工作」。你可以有一個完全定義的API並使用UI頁面「運行」它。快遞也是如此,沒有大招 - 你可以做很多很棒的事情!但是需要做一些努力來記錄這個API。

如果您要使用swagger-node-express,則需要將代碼耦合到API文檔。這可以爲您節省大量時間,並將更改保存在同一個文件中,等等。然而,就像您提到的所有問題一樣,您必須以高傲的方式來做事情。比單獨做這兩件事要快,但是必須遵守一些限制條件。

還有其他的swagger包可以從不同的角度解決這個問題。我看到一些嘗試從Express/Restify路由自動構建swagger文檔。 swagger-node-express的替代方案是swagger-tools,它甚至包括驗證,但是我想你會以某種方式限制寫入Express,而沒有集成任何swagger。

您可以自由地手動(或使用某些YAML,jsDoc軟件包或生成器)構建swagger文檔,但在寫入路由後需要一些額外的時間。另外,它是一個獨立的地方來維護你的文檔,並且總是在某些時候它們會不同步,如果不放棄的話。使用swagger-node-express主要是節省時間的工具,即使存在缺點,這也許值得額外的開發工作。

+0

是的,你是對的。 Maby我的目的不同,因爲我已經有API方法列表,現在我必須爲他們編寫代碼。我只是在尋找最靈活的工具 – 2015-04-01 12:46:43

+0

我同意,在已經運行的應用程序中使用swagger-node-express將會有很多重寫。您可以編寫swagger-node-express文檔{{spec:{},action:importFuntion}'並在其周圍導入當前函數。另外,像[swaggerize-express](https://github.com/krakenjs/swaggerize-express)這樣的東西可能更適合您在現有API的基礎上生成swagger文檔。 – clay 2015-04-01 16:10:32