拓冰建站拓冰建站
首页 / 资讯中心 / 正文

从Swagger 2.0到OpenAPI 3.0:swagger-blocks无缝迁移指南,一次掌握9种components块

从Swagger 2.0到OpenAPI 3.0swagger-blocks无缝迁移指南一次掌握9种components块【免费下载链接】swagger-blocksDefine and serve live-updating Swagger JSON for Ruby apps.项目地址: https://gitcode.com/gh_mirrors/sw/swagger-blocksswagger-blocks 是一个专为 Ruby 应用打造的 API 文档工具让你用纯 Ruby DSL 编写 Swagger / OpenAPI 定义并实时生成可被 Swagger UI 渲染的 JSON。改一行代码、刷新页面文档即刻更新——无需构建脚本、无需静态文件。本文带你从 Swagger 2.0 平滑迁移到 OpenAPI 3.0并一次讲清 components 下 9 种子块的用法。一、先认识 swagger-blocks为什么值得用它的设计哲学非常简单块名与规范字段一一对应。你写 Ruby 块它输出规范 JSON几乎零心智负担。核心亮点⚡实时刷新定义动态生成代码改动后立即生效全框架兼容Rails、Sinatra、甚至纯 Ruby 对象都能用完整覆盖Swagger 2.0 全部特性 OpenAPI 3.0 的 components、servers、callbacks高度灵活可按环境输出不同 API 文档源码结构也很清晰每个规范节点都对应一个文件方便按需阅读入口与 DSLlib/swagger/blocks.rb节点实现目录lib/swagger/blocks/nodes/根对象构建逻辑lib/swagger/blocks/root.rb一键安装在 Gemfile 中加入gem swagger-blocks二、迁移前必读2.0 与 3.0 的六大区别概念Swagger 2.0 写法OpenAPI 3.0 写法根标记key :swagger, 2.0key :openapi, 3.0.0服务地址hostbasePathserver块支持变量内容类型consumes/produces响应/请求体内的content块模型定义definitionscomponents→schemas认证定义根级security_definitioncomponents→securitySchemes请求体parameter in: :body schemarequest_body$ref理解了这张表迁移就是「照表换写法」逻辑与业务代码完全不用动。三、三步完成无缝迁移 第一步把根块换成 OpenAPI 3.0原来swagger_root里的host、basePath、consumes、produces全部撤掉换成server块swagger_root do key :openapi, 3.0.0 info version: 1.0.1 do key :title, Swagger Petstore end server do key :url, http://petstore.swagger.io/v1 key :description, Petstore API end end⚠️新手最常踩的坑报swagger_root must be declared时请检查生成 JSON 时传入的类列表里是否包含了声明swagger_root的那个类本身即加入self。第二步把「body 参数」改成 request_body2.0 时代请求体伪装成一个in: :body的参数3.0 中它独立成了request_body。配合content块指定媒体类型operation :post do request_body :#/components/requestBodies/PetBody do key :description, A JSON object containing pet information end end响应部分同理用content :application/json取代produces。第三步把 definitions 搬进 swagger_componentOpenAPI 3.0 用components统一收纳所有可复用对象swagger-blocks 用swagger_component块与之对应实现见 lib/swagger/blocks/nodes/component_node.rbswagger_component do schema :Pet do key :required, [:id, :name] property :id do key :type, :integer end end end四、一次掌握 9 种 components 块 OpenAPI 3.0 的components对象共有9 种子块swagger-blocks 已原生支持其中 7 种 DSL 方法另 2 种通过 3.0 节点机制实现#components 子块swagger-blocks 写法对应源文件1schemasschema :名称lib/swagger/blocks/nodes/schema_node.rb2parametersparameter :名称lib/swagger/blocks/nodes/parameter_node.rb3responsesresponse :名称lib/swagger/blocks/nodes/response_node.rb4examplesexample :名称lib/swagger/blocks/nodes/example_node.rb5requestBodiesrequest_body :名称lib/swagger/blocks/nodes/request_body_node.rb6securitySchemessecurity_scheme :名称lib/swagger/blocks/nodes/security_scheme_node.rb7linkslink :名称lib/swagger/blocks/nodes/link_node.rb8headers写在响应内的header块lib/swagger/blocks/nodes/header_node.rb9callbacks操作内的callback块lib/swagger/blocks/nodes/callback_node.rb一个swagger_component块可以同时混合声明 schema、security_scheme、example、link 等例如 OAuth2 认证security_scheme :OAuth2 do key :type, :oauth2 flow :authorizationCode do key :authorizationUrl, https://example.com/oauth/authorize scopes do key :read, Grants read access end end end五、迁移后白送的 3.0 新特性 多环境服务器一个server块内用variable定义{subdomain}、{version}占位符Swagger UI 里就能下拉切换环境彻底告别硬编码 URL。回调CallbackWebhook 场景用callback :orderUpdated声明内部还可嵌套request_body完整支持异步通知文档化。厂商扩展extension :x-tagGroups等自定义字段直接透传进 JSON实现见 lib/swagger/blocks/nodes/vendor_extension_node.rb。六、常见问题速查 ✅报 NotSupportedError根级的parameter、response、security_definition只在 2.0 合法3.0 中请移入swagger_component。逻辑判断见 lib/swagger/blocks/nodes/root_node.rb。想直接导出文件一行搞定Swagger::Blocks.build_root_json(类列表).to_json写入文件即可构建入口在 lib/swagger/blocks.rb。想看完整参考示例项目自带两套黄金样例——2.0 版 spec/lib/swagger_v2_blocks_spec.rb 与 3.0 版 spec/lib/swagger_v3_blocks_spec.rb配套预期 JSON 分别为swagger_v2_api_declaration.json和swagger_v3_api_declaration.json照着抄不会错。总结迁移 OpenAPI 3.0 对 swagger-blocks 用户来说只是「换三个关键词」——根标记换成openapi 3.0.0、host 换成server、definitions 换成swagger_component再顺手收获 servers、callbacks、examples 等 3.0 新特性。文档随代码实时生长让 API 文档第一次变得「不想偷懒」也要维护。【免费下载链接】swagger-blocksDefine and serve live-updating Swagger JSON for Ruby apps.项目地址: https://gitcode.com/gh_mirrors/sw/swagger-blocks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门