首页 > 解决方案 > UUID 验证从 oapi-coden 生成的验证器返回 500 错误

问题描述

我正在使用 deepmap/oapi-codegen 从 openapi 3.0.3 规范生成 chi-server,其中大部分工作正常,但我遇到了 UUID 验证问题。我已经定义了这样的路径参数(不是完整的定义):

openapi: "3.0.3"
info:
  title: "Example"
  description: "Sites API"
  version: "0.0.3"

paths:
  /sites/{siteId}:
    parameters:
      - in: path
        name: siteId
        required: true
        schema:
          type: string
          format: uuid

生成的验证器似乎可以正确识别无效的 UUID,但如果 UUID 无效,则坚持抛出 500 错误。查看验证代码,似乎它可能与上游问题有关,但由于我在 Go 世界中是全新的,我不完全确定我是否正确遵循流程。

这是设置 chi-router 的代码:

    swagger, err := Openapi.GetSwagger()
    if err != nil {
        s.logger.Error().Msg("Error loading swagger spec.")
    }

    swagger.Servers = nil
    router := chi.NewRouter()
    router.Use(middleware.OapiRequestValidator(swagger))
    Openapi.HandlerFromMux(s.api, router)

    api.Server = &http.Server{
        Handler: router,
        Addr:    fmt.Sprintf("0.0.0.0:%s", config.Port),
    }

有没有人看到这个问题?如果是这样,是否有解决方法/解决方法?我在我的代码中忘记了一些明显的东西吗?

标签: validationgocode-generationuuidopenapi

解决方案


推荐阅读