Swagger 招摇过市的最佳实践
我目前正在定义一个RESTAPI,我打算使用Swagger来记录它。 我已经开始用YAML中的开放API规范在Swagger编辑器中定义API规范 然后,我了解到我将向Swagger codegen提供该文件以生成服务器实现,并将该文件提供给Swagger UI(其静态文件先前将粘贴到我的服务器上)以公开交互文档 根据斯威格的说法,这是一种自上而下的方法 但是稍后,我可能需要修改这个API,我想通过前面定义的这个冗长的YAML文件来修改它,以使API易于被任何人修改(并且语言不可知)Swagger 招摇过市的最佳实践,swagger,Swagger,我目前正在定义一个RESTAPI,我打算使用Swagger来记录它。 我已经开始用YAML中的开放API规范在Swagger编辑器中定义API规范 然后,我了解到我将向Swagger codegen提供该文件以生成服务器实现,并将该文件提供给Swagger UI(其静态文件先前将粘贴到我的服务器上)以公开交互文档 根据斯威格的说法,这是一种自上而下的方法 但是稍后,我可能需要修改这个API,我想通过前面定义的这个冗长的YAML文件来修改它,以使API易于被任何人修改(并且语言不可知) 执行此操作
为了维护API文档,我建议的最佳做法是采用混合方法 最初,当您必须进行批量开发时,采用自顶向下的方法。这将减少初始设置和编码工作。这是任何codegen背后的基本思想 然后,当涉及到维护API或每天(或每周)添加一些新的API时,请遵循自底向上的方法。您已经有了前面的代码,唯一需要做的就是添加更多的注释或API定义
重复地使用自上而下的方法无法达到代码维护的目的。锅炉板和自我生成的代码是为了给你一个快速的开始,而不是为了维持 我的观点可能有偏见 对于API客户端,在大多数情况下不需要自定义它。如果您发现需要对其进行定制以满足您的需求,那么可以通过以下方式展开讨论(同时请检查可用于定制输出的选项,例如,对于PHP,运行
java-jar模块/swagger-codegen cli/target/swagger-codegen-cli.jar配置帮助-l PHP
)
对于服务器存根,理想情况下,开发人员只需要关注业务/应用程序逻辑,并在添加/删除/更新端点时重新生成服务器存根(但我不认为所有服务器存根都可以实现这一点)
免责声明:我是Swagger Codegen的头号贡献者谢谢你的回答,我认为它与我计划使用它的方式非常吻合,你的评论证实了我的观点。“自上而下的迭代方式违背了代码维护的目的。”不要同意这一点。理想情况下生成的代码不需要维护。只要生成的代码和实现代码可以分开,就可以重新生成。如果我将新端点添加到api中,我不想在可以添加定义并重新生成的情况下为它们编写锅炉板代码。是的,对于服务器存根的重新生成,这会很方便(如cxf wsdl生成的类),但根据官方的Swagger codegen直接提供方法端点(使用“//在这里做一些魔术”)而不是接口,我想他们没有计划这样使用它。我错了吗?我们还没有为服务器存根实现这一点。如果您想提供帮助,请在@wing328中打开一个问题或PR。在迭代yaml(开发期间)时,是否有使用生成的(.NET Core)服务器存根的最佳实践重复代码生成且不丢失实现的文件?在使用生成的代码时,有没有一个好地方可以询问swagger gen的最佳实践?请加入讨论,我意识到这个问题已经有好几年了,但我刚刚实现了使用swagger code gen为服务器生成锅炉板。我不知道事实上,我甚至没有将生成的代码签入git,只签入了swagger文件和生成参数(在pom.xml中,我使用了swagger maven插件生成一些代码)-当然还要加上实际的业务逻辑实现代码。