Ein Tool zur Erstellung eines TypeScript-SDKs und eines Mock-Simulators aus einer swagger.json-Datei
Das hier gemeinte SDK (Software Development Kit) umfasst die folgenden Funktionen:
- collection of fetch functions
- DTO structures
- Mockup Simulator
Wenn man das SDK erstellt und verwendet, ist es für Frontend- (Client-)Entwickler wesentlich einfacher und sicherer, als Swagger-Dokumente zu lesen und Fetch-Funktionen sowie DTO-Typen manuell zu übertragen. Außerdem übernimmt es automatisch auch das Mocking des Backend-Servers mit MSW, was die Produktivität steigert.
6 Kommentare
Guter Artikel, danke für den interessanten Ansatz. Das ist vielleicht nur meine persönliche Präferenz, aber ich hätte es gut gefunden, wenn im obigen Hauptteil Beispiele in der Art enthalten gewesen wären: „Wenn man diesen und jenen Code einfügt, wird aus dem bisherigen Verhalten dieses hier.“ Der aktuelle Hauptteil zieht meine Aufmerksamkeit kaum auf sich.
Ist es im TS-Ökosystem üblich, anhand der Dokumentation manuell die entsprechenden Typen und Funktionen zu definieren?
Dazu gibt es übrigens eine Bibliothek namens Tspec, die auf Basis von TypeScript-Typen automatisch OpenAPI-Spezifikationen erzeugt haha.
https://github.com/ts-spec/tspec
Bei TS ist der von
openapi-generatorerzeugte Code nicht wirklich brauchbar.Es wirkt ein wenig so, als wäre das die Anleitung für ein Tool, das samchon, der diesen Beitrag gepostet hat, selbst entwickelt hat; dann wäre es vielleicht eher etwas für Show GN.
Wie dem auch sei, die Idee, mit einer
swagger.json-Datei automatische Vervollständigung im TypeScript-Client zu ermöglichen, scheint mir gut zu sein. Kann man das vielleicht auch mit anderen Backend-Stacks außer NestJS verwenden?Unabhängig von Sprache oder Framework reicht es aus, wenn
swagger.jsonnach dem OpenAPI-v3.0-Standard gebaut werden kann.Ich hatte schon früher einen Blogbeitrag mit dem Tag „show GN“ gepostet, aber damals sagte der Administrator, dass unter „show GN“ nur GitHub- oder Projektlinks gepostet werden sollten, und hat ihn in einen normalen Beitrag verschoben.