go-openapi/loads

GitHub: go-openapi/loads

该库为 Go 语言提供 OpenAPI v2 规范文档的加载与对象模型解析能力,支持本地和远程的 JSON/YAML 格式输入。

Stars: 52 | Forks: 30

# 加载 OAI 规范 [![Tests](https://static.pigsec.cn/wp-content/uploads/repos/cas/db/dbc20fbb5b43d751115743b728bc221bb9cb0a7c6247701ddba81ac8c7acc81e.svg)][test-url] [![Coverage](https://codecov.io/gh/go-openapi/loads/branch/master/graph/badge.svg)][cov-url] [![CI vuln scan](https://static.pigsec.cn/wp-content/uploads/repos/cas/f3/f38b970f8dc114adca53ef9669122f3bf5a0a92b76f1cededc8e5af7f9b597c7.svg)][vuln-scan-url] [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/cas/53/539e9a6bf48ad24469a4363bff3aa68124154549e26592783d3d8577f2acbbfc.svg)][codeql-url] [![Release](https://badge.fury.io/gh/go-openapi%2Floads.svg)][release-url] [![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/loads)][gocard-url] [![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/go-openapi/loads)][codefactor-url] [![License](http://img.shields.io/badge/license-Apache%20v2-orange.svg)][license-url] [![GoDoc](https://pkg.go.dev/badge/github.com/go-openapi/loads)][godoc-url] [![Discord Channel](https://img.shields.io/discord/1446918742398341256?logo=discord&label=discord&color=blue)][discord-url] [![go version](https://img.shields.io/github/go-mod/go-version/go-openapi/loads)][goversion-url] ![Top language](https://img.shields.io/github/languages/top/go-openapi/loads) ![Commits since latest release](https://img.shields.io/github/commits-since/go-openapi/loads/latest) 从本地或远程位置加载 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工具, 对象模型, 开源库, 搜索引擎爬虫, 日志审计, 解析库