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

在yaml中可以使用enum作为路径参数吗?

禹昆
2023-03-14

Swagger提出了一个类似的问题:重用枚举定义作为查询参数。我的问题是我是否可以使用枚举(可重用或不可重用)。每当我尝试这样做的时候,我都会得到错误,但是使用字符串不会给出任何错误

/path/{protocol}:
  patch:
    summary:
    operationId:
    tags:
    parameters:
      - name: protocol
        in: path
        description: # some description
        required: true
        schema:
          $ref: "#/components/schemas/ProtocolType"

   ProtocolType:
     type: string
     default: abcd
     enum:
      - abcd
      - aaa
      - bbb

我的问题是上面的例子是否有效,或者我应该尝试什么可能的改变。我使用的是OpenAPI 3.0.0。

错误:

Compilation errors in XX.client.cpp
XX.client.cpp: In static member function ‘static void 
XX::SendSetProtocolReqRequest(std::string, const 
XX::model::SetProtocolReq_Request*, 
HTTPRequestEventContext::Ptr, uint64_t, HTTPClient*, FSM*, Statistics*, 
std::string, bool)’:
XX_Management.client.cpp:1822:33: error: no matching function for call to 
‘Json::ToValue(XX::model::XXEnumProtocolType*, 
framework::json::Value*)’
 Json::ToValue(&param, &value);  
                             ^

我对XX.client知之甚少.cpp .它是一个自动生成的文件,是在编译yaml文件后构建的。

共有1个答案

闻修筠
2023-03-14

对于SwaggerUI——使用2.0规范,您必须使用内联枚举,例如:

swagger: '2.0'
info:
  title: Report API
  version: v1
paths:
  /report/{reportType}:
    get:
      tags:
      - ReportController
      parameters:
      - in: path
        name: reportType
        required: true
        type: string
        enum: [foo, bar, baz]

在3.0中,您可以使用引用:

---
openapi: 3.0.1
info:
  title: Report API
  version: v1
paths:
  "/report/{reportType}":
    get:
      tags:
      - ReportController
      parameters:
      - name: exportType
        in: path
        description: ''
        required: true
        schema:
          "$ref": "#/components/schemas/ReportType"
components:
  schemas:
    ReportType:
      enum:
      - foo
      - bar
      - baz
      type: string
 类似资料:
  • 我一直在使用缓冲本地驱动器上的文件来解析和获取某些数据。出于测试目的,我可以很容易地这样做: 文件阅读器。java文件具有以下功能: 现在,我希望将文件路径作为命令行参数传递。我尝试了一些方法,但我对这方面还是有点陌生,没能成功。有人能帮我解释一下我需要做什么样的更改才能将这些更改合并到我的代码中吗。

  • 问题内容: 我正在开发Java企业应用程序,当前正在执行Java EE安全性工作,以限制对特定用户的特定功能的访问。我配置了应用程序服务器以及所有内容,现在使用RolesAllowed注释保护方法的安全: 当我使用这样的注释时,它可以正常工作: 但这不是我想要的,因为我必须在这里使用String,因此重构变得很困难,并且可能会出现拼写错误。因此,我想使用一个Enum值作为此注释的参数,而不是使用S

  • 问题内容: 如果您熟悉Bean验证框架,那么您将无法获得方法参数的名称。因此,如果对方法的第一个参数执行@NotNull约束,并且验证失败,则getPropertyPath将类似于“ arg1”。 我想创建自己的@NotNull版本,该版本可以采用例如@NamedNotNull(“ emailAddress”)的值。但是我不知道如何在验证器中覆盖#getPropertyPath?有什么办法做到这一

  • 问题内容: 我可以用作python函数参数的名称吗? 问题答案: 可以,但是不可以。使用内置名称不是一个好习惯,因为它们会覆盖该作用域中的内置名称。如果您必须使用该单词,请针对给定的上下文对其稍加修改。 尽管对于一个不使用的小型项目来说可能无关紧要,但最好不要使用关键字/内置名称的习惯。如果您绝对必须使用与关键字冲突的名称,则《Python样式指南》提供了解决方案: :按惯例用于避免与Python

  • 问题内容: 在Spring 3.0中,我可以有一个可选的path变量吗? 例如 在这里我想还是要调用相同的方法。 一种明显的解决方法是声明为请求参数: 然后/json?type=abc&track=aa或/json?track=rr将工作 问题答案: 你不能具有可选的路径变量,但是可以有两个调用相同服务代码的控制器方法:

  • 问题内容: 我想用可选的path参数声明一个路径,因此当我添加它时,页面会做一些额外的事情(例如,填充一些数据): http:// localhost / app / path / to / page <=渲染页面 http:// localhost / app / path / to / page / pathParam <=根据pathParam使用某些数据渲染页面 在我的React Rout