go-openapi/loads
GitHub: go-openapi/loads
该库为 Go 语言提供 OpenAPI v2 规范文档的加载与对象模型解析能力,支持本地和远程的 JSON/YAML 格式输入。
Stars: 52 | Forks: 30
# 加载 OAI 规范
[][test-url] [][cov-url] [][vuln-scan-url] [][codeql-url]
[][release-url] [][gocard-url] [][codefactor-url] [][license-url]
[][godoc-url] [][discord-url] [][goversion-url]  
从本地或远程位置加载 OAI v2 API 规范文档。
支持 JSON 和 YAML 文档。
## 公告
* **2025-12-19** : discord 上的新社区聊天
* 提供了一个新的 discord 社区频道,用于通知变更并为用户提供支持
## 状态
API 是稳定的。
## 在你的项目中导入此库
```
go get github.com/go-openapi/loads
```
## 基本用法
```
import (
"github.com/go-openapi/loads"
)
...
// loads a YAML spec from a http file
doc, err := loads.Spec(ts.URL)
...
// retrieves the object model for the API specification
spec := doc.Spec()
...
```
另请参阅提供的[示例](https://pkg.go.dev/github.com/go-openapi/loads#pkg-examples)。
## 安全性
该库本身不强制执行任何安全策略:它会读取已配置的加载器允许读取的任何内容。
这是有意为之 —— 就像 `go-openapi/swag/loading` 一样,它是一个基础工具,
对不受信任的输入进行清理或隔离是调用者的责任,
就像在将文件名传递给 `os.ReadFile` 之前对其进行清理不是该函数的职责一样。
当规范 —— 其路径或其 `$ref` 内容 —— 可能来自不受信任的源时,请显式地限制
加载(例如,对于本地文件使用 `loading.WithRoot`,对于远程 URL 使用受限的
`loading.WithHTTPClient`,并通过 `loads.WithLoadingOptions` 传递)。
对于常见情况,预置的 `loads.SpecRestricted` / `loads.JSONSpecRestricted` 加载器
将受信任的根与网络受限的客户端(`loads.RestrictedHTTPClient`)捆绑在一起,并且
将此限制同样应用于 `$ref` 解析:
```
doc, err := loads.SpecRestricted(path, trustedRoot)
```
要通过一次调用强化包级别的默认设置 —— 这样即使是依赖全局
加载器(包括通过 `spec.PathLoader` 进行的跨包 `$ref` 解析)的调用者也会受到限制,并且不会
留下不受限制的回退 —— 请在启动时使用 `loads.SetRestrictedLoaders`:
```
loads.SetRestrictedLoaders(trustedRoot)
```
请注意,`loads.AddLoader` 仅会 *前置添加* 到默认链中,使得不受限制的加载器
仍然可用;请使用 `loads.SetLoaders` / `loads.SetRestrictedLoaders` 来替换它。
有关威胁模型和可运行示例,请参阅[包文档的安全部分][security-doc]。
有关项目的漏洞报告策略,请参阅 [SECURITY.md](./SECURITY.md)。
## 更新日志
参见
## 许可证
本库基于 [SPDX-License-Identifier: Apache-2.0](./LICENSE) 发布。
## 其他文档
## 发布新版本
维护者可以通过以下任一方式发布新版本:
* 运行[此 workflow](https://github.com/go-openapi/loads/actions/workflows/bump-release.yml)
* 或推送一个 semver tag
* 首选签名 tag
* tag 消息会前置添加到发布说明中
标签:API规范, EVTX分析, Go, Homebrew安装, OpenAPI, Ruby工具, 对象模型, 开源库, 搜索引擎爬虫, 日志审计, 解析库