web-dev-qa-db-fra.com

Générer automatiquement du code client TypeScript pour les contrôleurs ASP.NET Core

Je cherche un moyen de générer automatiquement le code client TypesScript à partir d'une application Web ASP.NET Core (utilisant actuellement Visual Studio 2017RC et webpack).

Existe-t-il des outils permettant de générer le client TypeScript dans le pipeline de construction de Visual Studio ou avec Webpack? J'ai essayé d'utiliser le middleware swagger, puis de générer un client à partir de l'URL swagger, mais je ne suis pas sûr que la génération intermédiaire de swagger constitue l'outil idéal. En outre, la déconnexion des outils de construction n’est pas idéale.

10
Fionn
  1. Les deux NSwag et Swashbuckle/swagger-codegen sont géniaux. 

    1. Machine à écrire est une autre option géniale. 

    2. Alors, voici comment je prendrais la décision:

      • Besoin de générer des modèles TypeScript selon les modèles C #, optez pour TypeWriter
      • Besoin de générer un code côté client complet avec la ligne de commande que vous pouvez ajouter en tant qu'étape de construction ou de publication pour Swagger Code Gen

      • Vous devez jouer avec les spécifications Swagger ou le code généré pour ajouter vos personnalisations - optez pour NSwag

      • Besoin d'afficher des extraits de code en ligne du client dans l'interface utilisateur de Swagger, utilisez SwaggerUI-snippets
15
Gaurav Madaan

Vous pouvez ajouter Swashbuckle à votre application Web ASP.NET Core, puis générer Swagger/OpenAPI spec .

Avec la spécification Swagger/OpenAPI, vous pouvez ensuite utiliser Swagger Codegen pour générer non seulement des clients API TypeScript (Node, Angular, Angular2, Fetch), mais également des clients API en C #, Java, JS, Swift, etc. ainsi qu'une documentation sur l'API.

Le moyen le plus simple d'essayer Swagger Codegen consiste à utiliser https://editor.swagger.io en important vos spécifications, puis en sélectionnant l'API cible que vous souhaitez générer. ( https://editor.swagger.io exploite https://generator.swagger.io pour générer du code et generator.swagger.io est alimenté par Swagger Codegen)

Swagger Codegen peut également générer des talons de serveur dans C # Nancyfx ou ASP.NET afin que vous puissiez suivre l'approche du contrat en rédigeant la spécification à l'aide de https://editor.swagger.io , puis en générant les clients API et talons de serveur.

MISE À JOUR: En mai 2018, environ 50 principaux contributeurs et créateurs de modèles de Swagger Codegen ont décidé de créer une version gérée par la communauté pour maintenir une version pilotée par la communauté appelée OpenAPI Generator . Veuillez vous référer au Q & R pour plus d’informations.

10
William Cheng

Une autre option est NSwag, qui peut générer des spécifications Swagger à partir de vos contrôleurs ASP.NET (Core) et des clients TypeScript à partir de cette spécification Swagger (pour Angular, AngularJS, Fetch, etc.). L'intégration est très simple et prend en charge de nombreuses fonctionnalités avancées (héritage, énumérations nommées, extensions de code, etc.). 

http://NSwag.org

En utilisant l'interface utilisateur de NSwagStudio, il est très simple de commencer et vous pouvez tout automatiser avec le package NPM (c'est-à-dire en exécutant le fichier de configuration dans la ligne cmd). 

 enter image description here

Je suis l'un des auteurs du projet. 

5
Rico Suter

Vous pouvez également consulter le générateur de code client autorest.TypeScript . Il fournit de bonnes interfaces pour toutes les définitions de modèle, définit avec précision les propriétés et les énumérations en lecture seule. Il supporte un groupe d'extensions custom qui peuvent être utiles pour améliorer l'expérience utilisateur du client généré. Vous pouvez consulter quelques exemples de clients générés .

Bonus: le client TypeScript généré fonctionne dans node.js et également dans le navigateur.

1

Si vos clients TypeScript utilisent jQuery ou Angular 2+, une alternative Générateurs de client ASP.NET Web API peut être plus pratique et moins onéreuse que la chaîne d'outils swagger pendant SDLC.

Et il prend en charge .NET Core en plus de .NET Framework et .NET Standard.

0
ZZZ