Try it out
直接在浏览器里从某个端点的页面发起真实请求,支持鉴权,并通过同源代理避开 CORS。
用法
每个端点的请求面板在语言标签旁边都有一个 Code / Try it out 模式切换按钮。Try it out 是一个可编辑的表单(base URL、路径/查询/请求头参数、请求体),通过 executeRequest() 执行真实请求,并在 Live 标签页里和已声明的示例响应并排展示结果(body 是 JSON 时会格式化输出,网络/CORS 失败时给出友好提示,而不是原始错误)。base URL 默认取 OpenAPI 文档 servers[] 数组的第一项(如果存在的话),并且始终可以自由编辑。
身份验证
有 security 要求的端点会带一个内联的鉴权表单,每种声明的方案对应一个输入框:
- apiKey:根据其声明的位置,放进请求头或查询参数。
- http bearer / OAuth2 / OpenID Connect:都接受你直接粘贴进去的 token,不会执行任何 OAuth 流程。
- http basic:需要 user:pass。
凭据是全局的(在使用同一方案的所有端点之间共享,就像一个真实的开发 token 那样),并持久化到 localStorage,刷新页面后依然保留。
当一次成功的 Live 响应中包含类似 token 的字段时(比如登录端点的 access_token,包括嵌套在 data.access_token 这类信封结构里的情况),会出现一个“Use as … token”按钮,让你把它复用为本次会话剩余部分的凭据,不用手动复制粘贴。
同源代理
默认情况下,Try it out 是浏览器直接对目标 API 发起的 fetch(),受限于该 API 自身的 CORS 策略。当 nestjs-docfy 的 DocfyUiModule.setup()(见 API 参考)配置了一份 OpenAPI 文档时,docfy-ui 会检测到注入的 window.__DOCFY_PROXY_PATH__ 全局变量,转而把请求路由给一个同源的服务端代理,CORS 就完全不适用了。
代理的允许列表只根据文档 servers[] 数组中的绝对 URL 构建。这里没有隐式的“和本次请求同源”兜底,因为那要依赖客户端可控的请求头。对不允许的来源发起的请求,或者代理自身出现的任何其他失败,都会带上 X-Docfy-Proxy-Error 响应头返回,这样 docfy-ui 就能把代理层的失败和你的 API 真正返回的响应区分开。