当前位置: 首页 > 知识库问答 >
问题:

Swager:通配符路径参数

华宣
2023-03-14

我有一个API,它允许传入任何任意路径,例如所有这些:

  • /api/tags
  • /api/tags/foo
  • /api/tags/foo/bar/baz

是有效路径。我试着这样描述:

 /tags{tag_path}:
    get:
      parameters:
        - name: tag_path
          in: path
          required: true
          type: string
          default: "/"

但是https://generator.swagger.io在路径中编码斜线,所以不起作用。那么有没有办法用Swagger来描述我的API呢?

共有2个答案

楚嘉
2023-03-14

如果您使用的是Connexion之类的框架,它很可能确实支持通配符路径参数(即使它不在OpenAPI规范中)。

这是Connexion的一个例子。

paths:
  /pages/{path}:
    get:
     # (...)
      parameters:
        - name: "path"
          in: path
          description: "Remainder of path, including slashes."
          schema:
            type: string
            format: path

不同之处在于添加了格式:路径

东门茂实
2023-03-14

从OpenAPI 3.1开始,这是不受支持的,我不得不求助于一种解决方法。

如果我有一个路径 /tags{tag_path} 并且我输入类似这样的内容tag_path/foo/bar,那么实际的查询请求 URL 将是:/tags/foo/bar。因此,我只是在我的后端添加了对此的支持:/tags* url 的endpoint处理程序对路径(即 /foo/bar)进行解码,然后它再次变为 /foo/bar

是的,一个黑客,但它有效,总比没有好。在我的例子中,标签名称不能包含/字符,所以没有冲突。当然,您的里程可能会有所不同。

 类似资料:
  • 在一个由Swagger-UI渲染的API规范中,同一个路径是否可能出现不止一次? 我应该创建单独的api规范并加载两个Swagger-UI实例吗?处理这件事的最好方法是什么? 例如,我有一个名为/oauth/token的endpoint,我想用一组oauth Authorization Code流的参数对其进行记录,用一组不同的参数对client_credentials流的同一个endpoint/

  • 我正在使用http://editor.swagger.io为了设计API,我遇到了一个我不知道如何解决的错误: 我以类似的方式定义了其他终结点,并且没有收到此错误。我想知道我是否对缩进或未闭合的引号有一些问题,但情况似乎并非如此。谷歌似乎也没有提供任何有用的结果。 有什么提示吗?

  • 问题内容: 我正在运行应该执行方法的Shell脚本: 在这一点上,我得到这个异常: 这是因为弹簧罐位于另一个文件夹中。所以我更改了脚本: 但是,使用此脚本无法找到com.example.ClassTest。关于这个问题有什么想法吗? 提前致谢 问题答案: Java类路径通配符扩展不常见。 从文档: 了解类路径通配符 类路径条目可以包含基本名称通配符,这被认为等效于指定目录中所有扩展名为.jar或.

  • 我在GCP中配置了Kubernetes集群,如下所示, 进入。亚马尔 应用程序。亚马尔 默认后端。亚马尔 我的健康检查很好,负载平衡器已经启动并运行。我也可以点击默认后端。但是当我试着打的时候, 我在404状态码的postman中发现以下错误, 但是API在服务中可用,当我将服务从NodePort切换到LoadBalancer时,我可以使用LoadBalancer IP访问API。有人能帮我解决这

  • 是否可以使参数验证集与通配符一起工作? 我希望在位置接受0-100。 错误消息: 无法验证参数“variable”得参数.参数“6.1.1.0”不属于集合“6.1...”由ValidateSet属性指定。提供一个集合中的参数,然后重试该命令。+CategoryInfo:InvalidData:(:)[],ParentContainsErrorRecordException+FullyQualifi

  • 4.4.1 使用路径通配符加载Resource 前面介绍的资源路径都是非常简单的一个路径匹配一个资源,Spring还提供了一种更强大的Ant模式通配符匹配,从能一个路径匹配一批资源。 Ant路径通配符支持“?”、“”、“*”,注意通配符匹配不包括目录分隔符“/”: “?”:匹配一个字符,如“config?.xml”将匹配“config1.xml”; “*”:匹配零个或多个字符串,如“cn//con