Json 相同的路径是否只允许使用一个查询,而允许使用其他路径参数?

Json 相同的路径是否只允许使用一个查询,而允许使用其他路径参数?,json,swagger,swagger-2.0,Json,Swagger,Swagger 2.0,我的问题与“仅在查询参数名称上不同的路径”一文中提出的问题类似。但是,我对使用不同查询参数的相同路径不感兴趣;相反,我的问题是关于使用相同参数但以不同方式将这些参数作为输入的类似路径,一个作为查询参数,另一个作为路径参数 我尝试在swagger.json文件中创建两个不同的路径,一个包含它们作为查询参数,另一个包含它们作为路径参数,但没有成功。请看下面我的代码: '''swagger.json { // swagger initialisation "paths":{

我的问题与“仅在查询参数名称上不同的路径”一文中提出的问题类似。但是,我对使用不同查询参数的相同路径不感兴趣;相反,我的问题是关于使用相同参数但以不同方式将这些参数作为输入的类似路径,一个作为查询参数,另一个作为路径参数

我尝试在swagger.json文件中创建两个不同的路径,一个包含它们作为查询参数,另一个包含它们作为路径参数,但没有成功。请看下面我的代码:

  '''swagger.json 
 { 
  // swagger initialisation
  "paths":{
    "foo_b_ar/{foo}/{bar}":{
      "get":{
        "summary":"foo foo"
        "operationId": "super secret id"
        "produces":[
          "someName/json"
         ],
        "parameters":[ 
        { 
         "name" = "foo",
         "in" = "path",
         "description" = "something",
         "required" = true,
         "type" = "string"
        },
        { 
         "name" = "bar",
         "in" = "path",
         "description" = "something2",
         "required" = true,
         "type" = "string"
        }
        ], 
        "responses":{ 
              // something not relevant
        } } },
    "foo_b_ar":{
      "get":{
       "summary":"foo foo"
       "operationId": "super secret id"
       "produces":[
        "someName/json"
       ],
       "parameters":[ 
        { 
         "name" = "foo",
         "in" = "query",
         "description" = "something",
         "required" = true,
         "type" = "string"
        },
        { 
         "name" = "bar",
         "in" = "query",
         "description" = "something2",
         "required" = true,
         "type" = "string"
        }
       ], 
       "responses":{ 
         // something not relevant
       } } }
     }

我的问题是,我在swagger.json文件中尝试的操作是否被允许?

/foo\u b\u ar
/foo\u b\u ar/{foo}/{bar}
(请注意前面的
//code>-路径名中需要它)是不同的路径

/foo_b_ar/smth/other
/foo_b_ar/{foo}/{bar}
也是不同的路径,如果使用前一个(具体的)定义,应该首先匹配

相同路径的示例:

  • /{foo}
    /{bar}
  • /foo_b_ar/{foo}
    /foo_b_ar/{bar}
  • /foo_b_ar/{foo}/{bar}
    /foo_b_ar/{param1}/{param2}
  • /foo_b_ar/{foo}/something
    /foo_b_ar/{bar}/something
  • /foo_b_ar/something/{foo}
    /foo_b_ar/something/{bar}
也就是说,如果从相同路径中删除
{parameters}
,则相同路径是相同的路径


至于为什么“它不起作用”,在不知道具体什么不起作用以及在哪里的情况下,可能是因为您的swagger.json不是有效的json,也不是有效的OpenAPI定义。请使用JSON验证器(例如)和Swagger编辑器()对其进行验证。其中一些错误是:

  • JSON中的对象字段之间缺少逗号
  • 无效的键/值分隔符(
    =
    而不是
  • 路径开头缺少
    /
    <代码>“foo_b_ar”
不是有效路径,它必须是
“/foo_b_ar”
  • 重复的操作id:
    操作id:“超级机密id”

  • /foo_b_ar
    /foo_b_ar/{foo}/{bar}
    (注意,前导的
    /
    -在路径名中是必需的)是不同的路径

    /foo_b_ar/smth/other
    /foo_b_ar/{foo}/{bar}
    也是不同的路径,如果使用前一个(具体的)定义,应该首先匹配

    相同路径的示例:

    • /{foo}
      /{bar}
    • /foo_b_ar/{foo}
      /foo_b_ar/{bar}
    • /foo_b_ar/{foo}/{bar}
      /foo_b_ar/{param1}/{param2}
    • /foo_b_ar/{foo}/something
      /foo_b_ar/{bar}/something
    • /foo_b_ar/something/{foo}
      /foo_b_ar/something/{bar}
    也就是说,如果从相同路径中删除
    {parameters}
    ,则相同路径是相同的路径


    至于为什么“它不起作用”,在不知道具体什么不起作用以及在哪里的情况下,可能是因为您的swagger.json不是有效的json,也不是有效的OpenAPI定义。请使用JSON验证器(例如)和Swagger编辑器()对其进行验证。其中一些错误是:

    • JSON中的对象字段之间缺少逗号
    • 无效的键/值分隔符(
      =
      而不是
    • 路径开头缺少
      /
      <代码>“foo_b_ar”不是有效路径,它必须是
      “/foo_b_ar”
    • 重复的操作id:
      操作id:“超级机密id”