我想分享一下我对https://github.com/swagger-api/swagger-node-express
的看法它在Github上有564颗星,所以我认为使用它是合理的,但是:
使用静态swagger.json并在其上构建Express路由不是正确的方法吗? 或者我可能不了解一些实践
答案 0 :(得分:6)
Swagger只是一个规范。您可以手工制作一个没有任何代码的swagger规范,将规范提供给一个符合swigger-ui标准的页面,并且它将会起作用。"你可以有一个完全定义的API和"运行"它使用UI页面。对于没有招摇的快递也是如此 - 你可以做很多整洁的事情!但是需要付出一些努力才能以骄傲的方式记录API。
如果要使用swagger-node-express,则需要将代码与API文档相结合。这可以为您节省大量时间,并在同一个文件中保留更改等。但是,就像您提出的所有问题一样,您必须以swagger-node-express方式执行操作。比单独做两个都快,但必须遵循一些限制。
还有其他一些swagger包从不同角度解决这个问题。我已经看到一些尝试从Express / Restify路线自动构建swagger文档。 swagger-node-express的另一种选择是swagger-tools,它甚至包括验证,但我猜你在某种程度上有限制写Express而没有任何swagger集成。
您可以手动构建swagger文档(或使用某些YAML,jsDoc软件包或生成器),但在编写路由后需要一些额外的时间。另外,它是一个独立的地方来维护你的文档,如果不是放弃的话,它们总会在某些时候不同步。使用swagger-node-express主要是节省时间,即使有其缺点,也可能值得替代方案的额外开发工作。