You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言遍历Swagger YAML文档提取各路径方法operationId的实现方法

Go 遍历动态Swagger提取operationId实现

你可以通过逐层对map[interface{}]interface{}做类型断言,嵌套遍历paths、路径、请求方法三层结构实现需求,完整可运行代码如下:

package main

import (
	"fmt"
	"log"

	"gopkg.in/yaml.v2"
)

// 你的Swagger yaml内容
const data = `
swagger: "2.0"
host: "petstore.swagger.io"
basePath: "/v2"
schemes:
- "https"
- "http"
paths:
  /pet:
    post:
      tags:
      - "pet"
      summary: "Add a new pet to the store"
      operationId: "addPet"
    put:
      tags:
      - "pet"
      summary: "Update an existing pet"
      operationId: "updatePet"
  /pet/findByStatus:
    get:
      tags:
      - "pet"
      summary: "Finds Pets by status"
      operationId: "findPetsByStatus"
`

func main() {
	m := make(map[interface{}]interface{})
	err := yaml.Unmarshal([]byte(data), &m)
	if err != nil {
		log.Fatalf("解析yaml失败: %v", err)
	}

	// 取出paths层
	pathsVal, ok := m["paths"]
	if !ok {
		log.Fatal("swagger文档无paths字段")
	}
	pathsMap, ok := pathsVal.(map[interface{}]interface{})
	if !ok {
		log.Fatal("paths字段格式非法")
	}

	// 遍历所有路径
	for pathKey, methodVal := range pathsMap {
		path, ok := pathKey.(string)
		if !ok {
			continue
		}
		// 断言当前路径下的方法集合
		methodMap, ok := methodVal.(map[interface{}]interface{})
		if !ok {
			continue
		}
		// 遍历当前路径下所有请求方法
		for methodKey, opVal := range methodMap {
			method, ok := methodKey.(string)
			if !ok {
				continue
			}
			// 断言当前方法的详情map
			opMap, ok := opVal.(map[interface{}]interface{})
			if !ok {
				continue
			}
			// 取出operationId
			opIdVal, ok := opMap["operationId"]
			if !ok {
				continue
			}
			opId, ok := opIdVal.(string)
			if !ok {
				continue
			}
			// 按要求格式输出
			fmt.Printf("%s %s %s\n", path, method, opId)
		}
	}
}

运行后输出结果完全符合要求:

/pet post addPet
/pet put updatePet
/pet/findByStatus get findPetsByStatus

说明

  • 所有类型断言都加了合法性校验,遇到格式异常的字段会自动跳过,不会触发panic
  • 无需预定义任何结构体,完全适配动态变化的Swagger路径、方法结构
  • 如果需要提取其他字段(如summary、tags),直接从opMap中取对应key的值即可

内容的提问来源于stack exchange,提问作者AnupRai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:06:06