<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: superwf</title>
    <description>The latest articles on DEV Community by superwf (@superwf).</description>
    <link>https://dev.to/superwf</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F739689%2F3fd76b48-f809-49a3-8144-80f2ba910d22.png</url>
      <title>DEV Community: superwf</title>
      <link>https://dev.to/superwf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/superwf"/>
    <language>en</language>
    <item>
      <title>Generate typescript from openapi  </title>
      <dc:creator>superwf</dc:creator>
      <pubDate>Mon, 01 Nov 2021 02:06:32 +0000</pubDate>
      <link>https://dev.to/superwf/generate-typescript-from-openapi-5fj1</link>
      <guid>https://dev.to/superwf/generate-typescript-from-openapi-5fj1</guid>
      <description>&lt;h2&gt;
  
  
  Openapi doc for typescript integration.
&lt;/h2&gt;

&lt;p&gt;When we use typescript to connect restful api, there are many toos to generate the target service code. How to choose, here are some simple comparisons to reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  example source &lt;a href="https://github.com/superwf/ts-gear-example"&gt;https://github.com/superwf/ts-gear-example&lt;/a&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🆚 Compare
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Here are 5 tools &amp;amp;&amp;amp; 5 openapi doc =&amp;gt; 5x5 results
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Swagger pet store openapi v2
&lt;/h4&gt;

&lt;p&gt;Fixture source: &lt;a href="https://petstore.swagger.io/v2/swagger.json"&gt;https://petstore.swagger.io/v2/swagger.json&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅ &lt;code&gt;ts-gear&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn tsg -p tsGearPetV2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/tsGearPetV2/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Actually, run &lt;code&gt;yarn tsg&lt;/code&gt; without &lt;code&gt;-p&lt;/code&gt; will generate all service code configured in &lt;code&gt;src/tsg.config.ts&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅ &lt;code&gt;pont&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn pont&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/pont/petV2/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Actually, run &lt;code&gt;yarn pont&lt;/code&gt; will generate all service code configured in &lt;code&gt;pont-config.json&lt;/code&gt;, in other fixtures case it does not need run again.&lt;/p&gt;

&lt;p&gt;😢 The request functions generated by pont do &lt;strong&gt;NOT&lt;/strong&gt;connect  request parameters type nor response data type.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅ &lt;code&gt;openapi-generator&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn openapiGeneratorPetV2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/openapiGeneratorPetV2/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;✅ &lt;code&gt;swagger-codegen&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn swaggerCodegenPetV2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/swaggerCodegenPetV2/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;✅ &lt;code&gt;oazapfts&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn oazapftsPetV2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/oazapftsPetV2.ts&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ All tools generate result successfully.&lt;/p&gt;

&lt;h4&gt;
  
  
  Swagger pet store openapi v3
&lt;/h4&gt;

&lt;p&gt;Fixture source: &lt;a href="https://petstore3.swagger.io/api/v3/openapi.json"&gt;https://petstore3.swagger.io/api/v3/openapi.json&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅ &lt;code&gt;ts-gear&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn tsg -p tsGearPetV3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/tsGearPetV3/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;✅❌ &lt;code&gt;pont&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn pont&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/pont/petV3/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;😢 Run OK, but &lt;strong&gt;No definition data type&lt;/strong&gt; generated.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅ &lt;code&gt;openapi-generator&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn openapiGeneratorPetV3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/openapiGeneratorPetV3/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;✅ &lt;code&gt;swagger-codegen&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn swaggerCodegenPetV3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/swaggerCodegenPetV3/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;✅ &lt;code&gt;oazapfts&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn oazapftsPetV3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/oazapftsPetV3.ts&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ All tools generate result successfully.&lt;/p&gt;

&lt;h4&gt;
  
  
  Bad defined example 1
&lt;/h4&gt;

&lt;p&gt;Fixture source: &lt;a href="https://raw.githubusercontent.com/superwf/ts-gear-example/master/fixture/badDefined1.json"&gt;https://raw.githubusercontent.com/superwf/ts-gear-example/master/fixture/badDefined1.json&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅ &lt;code&gt;ts-gear&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn tsg -p tsGearBadDefined1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/tsGearBadDefined1/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;✅❌ &lt;code&gt;pont&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ command: &lt;code&gt;yarn pont&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;❌result position: &lt;code&gt;src/service/pont/badDefined1/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;😢 Run OK, but &lt;strong&gt;No meaningful&lt;/strong&gt; code generated.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅❌ &lt;code&gt;openapi-generator&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn openapiGeneratorBadDefined1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;❌ result: &lt;code&gt;error Command failed with exit code 1&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the command tell me use &lt;code&gt;--skip-validate-spec&lt;/code&gt; to skip validate, so try again with it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;command: &lt;code&gt;yarn openapiGeneratorBadDefined1 -- --skip-validate-spec&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;result position: &lt;code&gt;src/service/openapiGeneratorBadDefined1/&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;😢 Run OK, but many data type definition missing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅❌ &lt;code&gt;swagger-codegen&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn swaggerCodegenBadDefined1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;❌ result position: &lt;code&gt;src/service/swaggerCodegenBadDefined1/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;😢 Run OK, but many data type definition missing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;❌ &lt;code&gt;oazapfts&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn oazapftsBadDefined1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result: &lt;code&gt;UnhandledPromiseRejectionWarning: MissingPointerError: Token "ReplyVO«PageVO«FieldDefListVO»»" does not exist&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Bad defined example 2
&lt;/h3&gt;

&lt;p&gt;Fixture source: &lt;a href="https://raw.githubusercontent.com/superwf/ts-gear-example/master/fixture/badDefined2.json"&gt;https://raw.githubusercontent.com/superwf/ts-gear-example/master/fixture/badDefined2.json&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅ &lt;code&gt;ts-gear&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn tsg -p tsGearBadDefined2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/tsGearBadDefined2/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;✅❌ &lt;code&gt;pont&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn pont&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/pont/badDefined2/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;😢 &lt;strong&gt;No meaningful&lt;/strong&gt; code generated.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅❌ &lt;code&gt;openapi-generator&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn openapiGeneratorBadDefined2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result: &lt;code&gt;error Command failed with exit code 1&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the command tell me use &lt;code&gt;--skip-validate-spec&lt;/code&gt; to skip validate, so try again with it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;command: &lt;code&gt;yarn openapiGeneratorBadDefined2 -- --skip-validate-spec&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;result position: &lt;code&gt;src/service/openapiGeneratorBadDefined2/&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;😢 Run OK, but many data type definition missing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅❌ &lt;code&gt;swagger-codegen&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn swaggerCodegenBadDefined2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/swaggerCodegenBadDefined2/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;😢 Many data type definition missing and type name error.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;❌ &lt;code&gt;oazapfts&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn oazapftsBadDefined2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result: &lt;code&gt;UnhandledPromiseRejectionWarning: MissingPointerError: Token "ListVO" does not exist&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Bad defined example 3
&lt;/h3&gt;

&lt;p&gt;Fixture source: &lt;a href="https://raw.githubusercontent.com/superwf/ts-gear-example/master/fixture/badDefined3.json"&gt;https://raw.githubusercontent.com/superwf/ts-gear-example/master/fixture/badDefined3.json&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅ &lt;code&gt;ts-gear&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn tsg -p tsGearBadDefined3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/tsGearBadDefined3/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;✅ &lt;code&gt;pont&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn pont&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/pont/badDefined3/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;✅❌ &lt;code&gt;openapi-generator&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ command: &lt;code&gt;yarn openapiGeneratorBadDefined3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;❌ result: &lt;code&gt;src/service/openapiGeneratorBadDefined3/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;😢 Run OK, but result code has syntax error, can not be used directly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✅❌ &lt;code&gt;swagger-codegen&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn swaggerCodegenBadDefined3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result position: &lt;code&gt;src/service/swaggerCodegenBadDefined3/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;😢 Run OK, but result code has syntax error, can not be used directly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;❌ &lt;code&gt;oazapfts&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command: &lt;code&gt;yarn oazapftsBadDefined3&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;result: &lt;code&gt;UnhandledPromiseRejectionWarning: MissingPointerError: Token "Map" does not exist&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;tool&lt;/th&gt;
&lt;th&gt;bad doc compatible🌟&lt;/th&gt;
&lt;th&gt;comment output&lt;/th&gt;
&lt;th&gt;Generic type&lt;/th&gt;
&lt;th&gt;independent request export&lt;/th&gt;
&lt;th&gt;more language support&lt;/th&gt;
&lt;th&gt;mock data&lt;/th&gt;
&lt;th&gt;custom request logic&lt;/th&gt;
&lt;th&gt;translate none english&lt;/th&gt;
&lt;th&gt;filter api&lt;/th&gt;
&lt;th&gt;openapi V2 &amp;amp; V3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ts-gear&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅👀
&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pont&lt;/td&gt;
&lt;td&gt;✅❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;openapi-generator&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅👀
&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;swagger-codegen&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅👀
&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oazapfts&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅👀
&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Openapi-generator&lt;/code&gt; and &lt;code&gt;Swagger-codegen&lt;/code&gt; are the most common industry general tools, they are powerfull for supportting many program languages and special env.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Only &lt;code&gt;pont&lt;/code&gt; and &lt;code&gt;ts-gear&lt;/code&gt; use configuration file, all other tools just use cli arguments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;ts-gear&lt;/code&gt; has proved its self the compatibility with bad defined openapi doc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Generic type 👀
&lt;/h3&gt;

&lt;p&gt;Whether can generate generic type successfully, depends on the complement of openapi doc definition.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>restful</category>
      <category>openapi</category>
      <category>service</category>
    </item>
  </channel>
</rss>
