使用新的 tamplet 修改 Swagger Codegen 3.0.50

Modify Swagger Codegen 3.0.50 with new tamplets

提问人:FraDV 提问时间:11/6/2023 更新时间:11/8/2023 访问量:28

问:

我下载了最新的 swagger codegen 稳定版本(目前为 3.0.50),我打算用它来为我之前开发的 rest API 生成 html 格式的文档。 我设法生成了文档的第一个版本,但我看到我想更改各种元素:

  1. 在 nav-tab-examples 中只留下 Curl 和 Python 的示例(我对其他示例不感兴趣);
  2. 在 Python 示例中,我想用我编写的代码示例替换代码示例,该示例不使用 swagger_client 库,而是使用 requests 库来调用端点;
  3. 我想生成两个不同的模板,一个用于获取调用,一个用于发布调用,并确保 swagger codegen 将它们插入文档中的正确位置(而现在示例对每个人都是一样的,除了一些小的差异)。

对于第 (2) 点,我看到我可以直接修改 swagger codegen 使用的 .mustache 模板,它应该在 中,但是:modules/swagger-codegen/src/main/resources/htmlDocs2/sample_python.mustache

  1. 在我找不到任何子文件夹下;modules/swagger-codegen/src/main/resources
  2. 我仍然尝试编写自己的 .mustache 模板(沿着这个模板的思路)并将文件夹传递到 java 命令 () 中,但 swagger codegen 没有考虑它。java -jar swagger-codegen-3.0.50\modules\swagger-codegen-cli\target\swagger-codegen-cli.jar generate -i openapi_new.json -l html2 -t swagger-codegen-3.0.50\modules\swagger-codegen\src\main\resources\htmlDocs2 -c config.json

有人可以帮我吗?我试图依靠官方文档,但我不太明白如何进行。

swagger-codegen swagger-3.0

评论

0赞 FraDV 11/7/2023
关于“在 modules/swagger-codegen/src/main/resources 下我找不到任何子文件夹;”,我通过克隆 repo swagger-codegen-generator 并修改我在中找到的模板来解决它tree/master/src/main/resources/handlebars

答:

0赞 FraDV 11/8/2023 #1

我已经解决了我的问题,编写了三个不同的模板(一个用于 curl,两个用于 python)并修改了子文件夹 htmlDocs2 中的 index.mustache 模板。特别:

  1. 我评论了定义带有示例的选项卡的行;
  2. 对于 Python 示例,由于该示例在端点类型(POST 或 GET 端点)方面应该有所不同,因此我将现有行替换为以下行:

<div class="tab-pane" id="examples-{{baseName}}-{{nickname}}-0-python">
   <script type="text/javascript">var httpMethod = '{{{httpMethod}}}'; if (httpMethod === 'get') {document.write(`<pre class="prettyprint"><code class="language-python">{{>sample_python_get}}</code></pre>`);} else if (httpMethod === 'post') {document.write(`<pre class="prettyprint"><code class="language-python">{{>sample_python_post}}</code></pre>`);} else{document.write(`<pre class="prettyprint"><code class="language-python"></code></pre>`)}</script>
</div>

P.s.:我不是 html 和 javascript 编码方面的专家,所以可能有更好的方法来做我需要的事情,但就我而言,脚本是有效的。