Cloudflare Docs 的 APIRequest 组件基于 OpenAPI Schema 自动生成 curl 命令的完整指南【免费下载链接】cloudflare-docsCloudflare’s documentation项目地址: https://gitcode.com/GitHub_Trending/cl/cloudflare-docs导读APIRequest是 Cloudflare Docs 仓库中专用于文档编写场景的 MDX 组件只要提供 API 端点的path与method它就会从 Cloudflare API 的 OpenAPI Schema 中读取操作定义自动生成格式统一、带认证 Token 占位符的curl命令并附上所需 Token 权限说明。本篇指南以风格指南审查技能中的组件参考api-request.md为主体结合仓库源码深入讲解该组件的全部 Props、底层实现原理与正确使用方式帮助文档贡献者写出可复制、可运行且与官方格式一致的 API 调用示例。一、组件定位何时必须使用 APIRequest在 api-request.md 中定义了唯一一条核心规则如果在为 Cloudflare API 端点撰写文档时你打算使用手写的原始curl示例而不是APIRequest组件评审将给出suggestion级别的修改建议改用APIRequest以自动获得认证 Token 注入与统一格式。这意味着该组件是 Cloudflare Docs 编写 API 文档的首选方式。它的价值在于自动生成认证头根据操作在 OpenAPI Schema 中声明的security要求自动注入$CLOUDFLARE_API_TOKEN或$CLOUDFLARE_EMAIL/$CLOUDFLARE_API_KEY环境变量占位符避免手写示例因遗漏认证头而无法运行格式统一渲染链路统一走CURL组件的格式化逻辑所有curl示例的缩进、--request/--header/--json/--form用法保持一致错误校验前置路径、方法、参数名、请求体必填字段若与 Schema 不符构建期即抛出异常fail-loud不会把错误示例带进线上文档。从风格指南技能的整体设计看见 manifest.jsoncomponentNames为[APIRequest]即当待评审的补丁中出现APIRequest标签或APIRequest导入时审查 Agent 才会加载本参考文件进行规则匹配——因此该组件参考本质上是面向文档写作规则的一份触发即检查的规范。二、基本用法与 MDX 示例组件需要在 MDX 文件中先导入再使用完整的最小示例如下取自参考文档原文可直接复制import { APIRequest } from ~/components; APIRequest path/zones/{zone_id}/page_shield/scripts methodGET parameters{{ direction: asc }} /将其渲染后的实际效果等价于下面这条格式化好的curl命令curl https://api.cloudflare.com/client/v4/zones/$ZONE_ID/page_shield/scripts?directionasc \ --request GET \ --header Authorization: Bearer $CLOUDFLARE_API_TOKEN观察上例可以提炼出三个关键约定path必须使用 OpenAPI Schema 中的原始路径模板路径参数保持{zone_id}这样的花括号占位写法——组件在运行时会把它们替换成$ZONE_ID形式的 shell 环境变量method必须是 Schema 中真实存在的 HTTP 方法GET/HEAD/POST/PUT/DELETE/PATCHparameters同时支持 path 与 query 两类参数{ direction: asc }会被拼接为?directionasc。三、Props 完整参考参考文档结尾给出了全部 Props 清单结合 APIRequest.astro 中基于 Zod 的严格 Schema 定义.strict()意味着传入未声明的额外属性会直接报错可将各 Props 的语义与约束整理为下表Prop是否必填类型说明path必填stringOpenAPI Schema 中的端点路径模板例如/zones/{zone_id}/page_shield/scriptsmethod必填GET/HEAD/POST/PUT/DELETE/PATCHHTTP 方法必须是 Schema 中该路径下的合法操作parameters可选Recordstring, anyURL 路径参数与查询参数的替换值json可选object或object[]JSON 请求体传数组时逐元素校验必填字段form可选objectmultipart/form-data请求体逐项渲染为--formroles可选默认trueboolean/string控制是否展示Required API token permissions传字符串时按名称过滤 Token 权限组code可选Recordstring, any透传给底层CURL的代码块属性如title两条需要特别留意的组合约束json与form互斥。源码中有一行明确的 fail-loud 检查Cannot use both json and form properties.见 APIRequest.astro因此同一个调用示例不能同时携带两种请求体parameters不允许出现 Schema 中不存在的参数。源码会对用户传入的参数名与operation.parameters逐一比对APIRequest.astro一旦发现多余的参数名会抛出形如Provided parameters xxx not found in GET /path schema.的构建期错误从源头杜绝拼写错误的查询参数进入文档。四、底层原理从 Props 到 curl 的完整链路组件的全部行为可以在 APIRequest.astro 中逐行验证。整体流程分为六个阶段下面结合源码逐一拆解。1. OpenAPI Schema 的加载与缓存组件在渲染时调用getSchema()src/util/api.ts读取 Cloudflare API 的 OpenAPI SchemaSchema 文件由bin/fetch-openapi.ts在prebuild/prebuild:incremental钩子中提前抓取到本地对应package.json中的构建脚本getSchema直接读取本地副本读取不到本地文件时会抛出明确错误提示先执行pnpm run build或pnpm run build:incremental触发 prebuild 钩子避免构建期静默失败读取到的 JSON 会经过SwaggerParser.dereference做引用展开$ref 解析并且整个解析结果被 memoize 缓存——每次构建只解析一次而不是每个组件实例各解析一遍这对预渲染并行构建的性能至关重要api.ts。2. 操作查找与 URL 构造拿到 Schema 后组件通过getProperty(schema, \paths.${path}.${method.toLowerCase()}) 定位对应的 Operation 对象APIRequest.astro找不到操作会直接 throwOperation GET /xxx not found in schema.这类错误会在构建期阻断保证文档引用的端点与方法真实存在构造 URL 时以https://api.cloudflare.com/client/v4/为基准把以/开头的path剥离前导斜杠后拼接上去APIRequest.astro。3. 参数替换path 参数转环境变量query 参数拼接参数处理逻辑APIRequest.astro分两步path 参数遍历 Schema 中in path的参数先用encodeURIComponent编码{param}占位符并替换为传入值随后扫描 URL 中所有以{开头、}结尾的路径段统一转成大写环境变量形式如{zone_id}→$ZONE_IDquery 参数in query的参数写入url.searchParams如果传入值是数组会多次append从而天然支持多值查询参数例如?tagatagb否则用set覆盖。这也是为什么最终生成的命令里路径参数是$ZONE_ID而不是具体的 Zone ID——它提示读者在运行前先导出对应环境变量。4. 认证头自动注入认证处理读取操作的security声明APIRequest.astro如果安全要求包含api_token注入Authorization: Bearer $CLOUDFLARE_API_TOKEN如果包含api_key注入X-Auth-Email: $CLOUDFLARE_EMAIL与X-Auth-Key: $CLOUDFLARE_API_KEY二者取 Schema 中实际声明的组合文档作者无需手工猜测该端点使用哪种认证方式。5. 请求体必填字段校验对于携带json的调用组件读取requestBody.content[application/json].schema提取其中声明的required数组并逐对象核对传入的json是否覆盖所有必填属性APIRequest.astro。缺失时会抛出形如Missing the following required properties for POST /path: field1, field2的错误。若json是对象数组则逐个元素校验确保数组形式的批量请求示例同样完整。6. Token 权限展示与渲染委托若操作在 Schema 中带有x-api-token-group扩展字段组件会用Details渲染一个Required API token permissions折叠区列出至少满足其一即可的 Token 权限组并链接到 权限参考见 APIRequest.astro。传入字符串形式的roles时只保留名称中模糊匹配该字符串的权限组最终渲染委托给CURL组件APIRequest.astro并把操作的summary作为代码块标题透传同时code中的其余属性原样透传。五、渲染层CURL 组件如何产出格式化命令APIRequest不直接输出curl而是把组装好的url、method、headers、json/form交给 CURL.astro。该组件的格式化逻辑CURL.astro决定了最终展示形态首行输出curl url其后每行以\t缩进并最终用\\\n反斜杠 换行连接形成多行可读命令--header逐条输出Authorization等由APIRequest注入的头在此落地json会被美化JSON.stringify(json, null, \t\t)双层制表符缩进并按行首对齐包裹进--json ...单引号内的会被转义为\保证 JSON 内嵌引号时命令依然合法form逐项渲染为--form keyvalue值中的双引号会被\转义code.title被转换为 Shiki 代码高亮的metatitle...让代码块顶部显示操作摘要标题CURL.astro。CURL组件同样支持不依赖 Schema 的通用场景url必填、method默认GET、可传query但 curl.md 中的对应规则明确指出若目标是 Cloudflare API 端点应优先使用APIRequest而非CURL——这正是两组件职责边界的官方约定APIRequest面向 Cloudflare API 端点Schema 驱动、自带认证与校验CURL面向任意 HTTP 调用自由指定 URL。六、实践建议与常见构建期错误速查综合参考文档规则与源码实现面向文档贡献者的实操建议如下写 Cloudflare API 文档一律从APIRequest起步不要先手写curl再改用组件——组件能自动补齐认证头、权限说明与格式评审阶段对 raw curl 会给出 suggestion 级别的替换建议path与method必须与 Schema 严格一致。大小写、路径模板含花括号占位符或方法名不匹配时构建会因Operation not found in schema直接失败不要传 Schema 之外的参数。多余参数会触发Provided parameters ... not found in ... schema错误这是组件主动拒绝拼写错误的内置保护json与form只能二选一且json必须覆盖 Schema 声明的全部required字段否则构建期报Missing the following required properties用roles控制权限展示默认展示全部 Token 权限组需要聚焦某个权限维度时传入字符串过滤传false可整体隐藏权限折叠区路径变量即环境变量渲染结果中的$ZONE_ID等占位符提示读者运行前需导出对应环境变量文档中可配合说明这些变量的来源。可预见的典型错误信息及含义汇总构建期错误含义与处理Operation GET /xxx not found in schema.path 或 method 与 OpenAPI Schema 不匹配核对端点路径模板Provided parameters p1, p2 not found in GET /xxx schema.parameters中包含该端点不存在的参数删除多余项Missing the following required properties for POST /xxx: fieldjson未覆盖 Schema 声明的必填字段Cannot use both json and form properties.请求体两种载体同时使用二选一OpenAPI schema not found at ...构建未先运行 prebuild 钩子抓取 Schema先执行pnpm run build或pnpm run build:incremental七、总结APIRequest是 Cloudflare Docs 文档写作体系中Schema 驱动文档生成的代表组件作者只需声明path与method组件便会从 OpenAPI Schema 中推导出 URL、认证方式、请求体必填约束与 Token 权限要求并委托CURL渲染出格式统一的curl命令任何与 Schema 不符的写法都会在构建期以异常形式暴露。对文档读者而言它保证了示例可复制、可运行、认证完整对文档维护者而言它把 API 变更同步进文档的成本降到了最低——Schema 更新后所有APIRequest示例自动跟随最新定义。如需将自定义组件的写作规则接入同一套审查流程可参考风格指南技能中的 rule-authoring.md其中完整描述了规则分类、manifest.json注册与 eval 验证的接入步骤。【免费下载链接】cloudflare-docsCloudflare’s documentation项目地址: https://gitcode.com/GitHub_Trending/cl/cloudflare-docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?