2016-12-05 106 views
6

我使用swagger codegen代碼生成器使用typescript2/angular2語言生成了我的客戶端。swagger typescript/angular2 client

我無法弄清楚已經生成了什麼以及如何使用工件。

到目前爲止,我已經能夠弄清楚,create方法(userpasswd參數)的請求中不包含標頭。否則,我不明白如何提出請求。我在map方法回調中設置了一個斷點,它從未達到過。你可以看看UsersApi.ts

+3

由於2017年2月的,是最好的,我可以告訴大家,沒有人在做任何工作記錄如何使用發電機密封編輯Angular 2客戶端。 Swagger-codegen文檔說你應該參考下載客戶端附帶的README文件。沒有README文件,所以我猜這是一個沒有人想寫文檔的簡單例子(考慮到主題 - 有趣的諷刺意味 - 幫助文檔自動化的軟件本身沒有文檔)。 – pspahn

+0

如果你使用的是swagger 2.2.2,那麼這個bug被更新了,而更新的2.2.3版本會顯着改變生成的代碼。在繼續之前我會嘗試一下,儘管你現在可能已經有了。 – PeterS

回答

0

我在當前項目中使用swagger codegen生成的客戶端(typescript/ng2)。

首先我把生成的輸出放到我的項目中。你可以自動化這個或沒有。取決於你的api預計會改變多少。我將它放在'app/core/api'中,其中包括api文件夾和模型文件夾以及六個左右的其他文件。和一個.swagger-codegen文件夾(雖然我不是100%確定這是必要的)。

  1. 創建服務來包裝生成的API的使用,從而從它的去耦分量(在情況下,它改變)。因此,對於您的示例,我會創建我自己的user.service.ts以供我的組件使用。
  2. 在您的UserService類中,您需要從生成的代碼中導入公共API。這通常在api/index.ts中,或者只是: import *作爲'app/core/api'的客戶端; 當你只有一個API時,這更簡單。如果你有多個,它們被作爲一個名爲APIS的數組從api/api.ts/
  3. 導出。要使用api,你不需要創建頭文件或params或其中任何一個。生成的服務具有的方法應該接受調用需要的值,並處理創建json請求和響應對象。通過模型文件夾和服務ts本身應該使這一點更清晰。但對於你的例子,你只有兩種方法。創造和存在。在你的UserService中你創建了一個名爲CreateUser的方法,或者你喜歡的任何方法,並且你可以調用API方法create。將它傳遞給用戶名字符串和密碼字符串。這就對了。它會返回api調用返回值的一個可觀察值(它將json響應轉換爲一個打字稿對象(在api生成的代碼中的模型目錄中定義)
  4. 對於您的示例,它似乎沒有使用自定義對象。create方法剛剛返回Observable < {}>。因此,您可以調用它並將響應映射到您自己的User類實例,並使用它綁定到您的視圖模板。再次與api細節保持解耦。

希望這有助於。我會很樂意回答更具體的問題。