Swagger 那些OpenAPI3路径是否模棱两可?

Swagger 那些OpenAPI3路径是否模棱两可?,swagger,openapi,Swagger,Openapi,那些OpenAPI3路径是否模棱两可 /shops/{shopId}/pets/{petId} /shops/{shopId}/pets/_search 我想回答否,但是,严格阅读规范,我无法做出决定,因为它们似乎不属于规范中的三个陈述中的任何一个: 两条路径都不是具体的(规范中使用的术语) 路径似乎不符合具有相同层次结构但不同模板名称标准的模板路径(我不太清楚):“/shops/{}/pets/{}”!=“/shops/{}/pets/\u search” 路径看起来不像模棱两可的示例

那些OpenAPI3路径是否模棱两可

/shops/{shopId}/pets/{petId}   
/shops/{shopId}/pets/_search
我想回答,但是,严格阅读规范,我无法做出决定,因为它们似乎不属于规范中的三个陈述中的任何一个:

  • 两条路径都不是具体的(规范中使用的术语)
  • 路径似乎不符合具有相同层次结构但不同模板名称标准的模板路径(我不太清楚):
    “/shops/{}/pets/{}”!=“/shops/{}/pets/\u search”
  • 路径看起来不像模棱两可的示例
  • 下面是OA3规范的摘录(仅此而已:我的问题在第一行)

    OA3规范摘录

    OpenAPI3规范()的“路径对象”一段说明(3句话,3条语句):

    在匹配URL时,具体(非模板化)路径将在其模板化对应路径之前进行匹配。具有相同层次结构但具有不同模板名称的模板路径不得存在,因为它们是相同的。如果匹配不明确,则由工具决定使用哪一个

    这3条语句后面是3个示例(仅此而已):

    假设以下路径,具体定义为/pets/mine, 如果使用,将首先匹配:

    /宠物/{petId}
    /宠物/我的

    以下路径被视为相同且无效:

    /宠物/{petId}
    /宠物/{name}

    以下情况可能导致不明确的解决方案:

    /{entity}/me
    /书籍/{id}


    我对规范的理解是它们并不含糊,因为一个比另一个更具体。如果
    {petId}
    参数值设置为
    \u search

    ,则更具体的优先顺序。如果您可以帮助我们更清楚地说明规范,请确实在规范报告中提出问题或请求。谢谢谢谢@Mikeraphson的回答:这也是我的阅读(为了它的价值…)。也谢谢你的建议:我将提出一个问题。这里是问题的链接:不是你问题的答案。但是,URL
    /shops/{shopId}/pets/_search
    包含一个动词
    search
    ,这是一个反模式。然后URL应该是
    /shops/{shopId}/pets?action=\u search
    @MohitMutha为什么这是反模式?相反,为什么可以在查询参数中包含动词,而不是在路径参数中?在Http中,动词是表示CRUD操作之一的Http方法(GET、PUT、POST、DELETE等)。在上述情况下,您需要
    搜索
    ,这是GET的一种形式。
    GET/shops/{shopId}/pets
    说我想要一个
    pets
    列表,因此没有必要进行
    搜索
    /@MohitMutha搜索不仅仅是简单地获取一个宠物列表:它是关于获取一个包含分数和方面的点击列表。但我明白你的意思:\你的搜索不是安静的。