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

Swagger swashbuckle:使用查询参数POST APIendpoint

葛宏爽
2023-03-14

例如:我有两个相同的路由定义endpoint:

  • 发布/api/customer(路由模板->/api/customer)
  • post/api/customer?f={f}&l={l}(路由模板->/api/customer)

默认的swagger生成器的问题是它给出了与相同endpoint的冲突。我尝试了swashbuckle中的ResolveConflictingActions方法,但没有太大帮助。

共有1个答案

章青青
2023-03-14

您从Swashbuckle得到的错误是正确的,您试图为同一路由创建多个操作,查询参数没有使路径唯一。这违反了昂首阔步的规范。从OpenAPI规范...

对于每个路径,定义可用于访问该路径的操作(HTTP方法)。OpenAPI 3.0支持get、post、put、patch、delete、head、options和trace。单个路径可以支持多个操作,例如,GET/users获取用户列表,POST/users添加新用户。OpenAPI将唯一操作定义为路径和HTTP方法的组合。这意味着同一路径不允许使用两个GET或两个POST方法-即使它们有不同的参数(参数对唯一性没有影响)。

您应该使用可选的查询参数创建单个路径。您最终将拥有相同的API,并具有一个兼容的大摇大摆的定义。

 类似资料:
  • 查询创建工具及查询编辑器都支持在查询文本使用参数。你可以设置查询参数来在每次运行查询时添加变量值。参数应作为一个识别符以 $ 开头,[ ] 括住,例如 [$任何名]。 运行查询及 输入参数 对话框提供你输入想要搜索的数据。

  • 查询支持在查询文本内使用参数。你可以设置查询参数,于每次运行查询时添加变量值。参数是一个以 $ 开头以及用 [ ] 括住的标识符,例如:[$任何名]。 运行查询时,你可以在“输入参数”对话框输入你想要搜索的数据。如勾选“原始模式”选项,将不会在传递输入值到查询时添加引号。

  • 查询支持在查询文本内使用参数。你可以设置查询参数,于每次运行查询时添加变量值。参数是一个以 $ 开头以及用 [ ] 括住的标识符,例如:[$任何名]。 运行查询时,你可以在“输入参数”对话框输入你想要搜索的数据。如勾选“原始模式”选项,将不会在传递输入值到查询时添加引号。

  • 查询支持在查询文本内使用参数。你可以设置查询参数,于每次运行查询时添加变量值。参数是一个以 $ 开头以及用 [ ] 括住的标识符,例如:[$任何名]。 运行查询时,你可以在“输入参数”对话框输入你想要搜索的数据。如勾选“原始模式”选项,将不会在传递输入值到查询时添加引号。

  • 问题内容: 当我尝试使用此查询时,我收到一条错误消息,指出Perameter电子邮件不存在,我确定变量:email,login_pass,payment_method,operateur是有效的并且存在。 我尝试删除引号,但我得到了 您的Sql语法有错误,请在第1行的’:email,:login_pass,:payment_method,:avecpuce)’附近查看与您的SQL Server对应

  • 我试图使用jpa组件来选择从标题中获取的id。我在文档中找到了一个使用本机select查询的示例: 我试图用${header.id}替换“1”常量: 这似乎不管用,我明白了: 也许还有别的方法可以让它发挥作用?