必须在操​​作中定义UriTemplate中使用的Azure API管理模板参数,反之亦然

时间:2018-09-10 19:08:06

标签: azure swagger azure-functions azure-api-management

我有许多Azure功能,现在我想将Azure API管理放在前面。

我已经从我的帐户中的其他2个或3个功能应用程序导入了所有功能,没有问题,但是其中一个功能应用程序出现了问题。该功能应用程序具有6个功能,如果我选择了其中的一个,则可以导入其中3个功能。其他3个函数中的某些错误引发错误:

All template parameters used in the UriTemplate must be defined in the Operation, and vice-versa.

以下是由Azure函数本身创建的Swagger api文档的相关部分:

    paths:
'/api/api-keys/{customerId}':
    delete:
    operationId: '/api/api-keys/{customerId}/delete'
    produces: []
    consumes: []
    parameters:
        - name: customerId
        in: path
        required: true
        type: string
    description: >-
        Replace with Operation Object
        #http://swagger.io/specification/#operationObject
    responses:
        '200':
        description: Success operation
    security:
        - apikeyQuery: []
'/api/api-keys/{customerId}/{apiKeyId}':
    delete:
    operationId: '/api/api-keys/{customerId}/{apiKeyId}/delete'
    produces: []
    consumes: []
    parameters:
        - name: customerId
        in: path
        required: true
        type: string
        - name: apiKeyId
        in: path
        required: true
        type: string
    description: >-
        Replace with Operation Object
        #http://swagger.io/specification/#operationObject
    responses:
        '200':
        description: Success operation
    security:
        - apikeyQuery: []
'/api/password-hashes/{customerId}/{prefix}':
    get:
    operationId: '/api/hashes/{customerId}/{prefix}/get'
    produces: []
    consumes: []
    parameters:
        - name: customerId
        in: path
        required: true
        type: string
        - name: prefix
        in: path
        required: true
        type: string
    description: >-
        Replace with Operation Object
        #http://swagger.io/specification/#operationObject
    responses:
        '200':
        description: Success operation
    security:
        - apikeyQuery: []

通过检查,我已经验证了参数中的所有项目都在路径中。我不确定在这里是否缺少任何内容,但是在Internet上环顾四周,我对这个问题的了解并不多。

2 个答案:

答案 0 :(得分:0)

更新(10/1/18):该问题已修复。如果仍可重现,请清除浏览器缓存。

目前,Function App导入完全不使用为Function App定义的OpenAPI规范。相反,它直接使用FunctionApp定义。该问题是由于您的函数具有带有参数的路由,例如/ route / {param}。这将很快修复。

现在应该可以使用。

答案 1 :(得分:0)

打开api规范中有一个未定义的参数。

由于Azure不会为您提供更多详细信息,因此可以使用swagger editor来验证您的规范。 编辑器将为您提供详细的错误消息: enter image description here

另请参阅https://jamesradley.co.uk/2020/04/16/azure-api-management-template-parameters-used-in-the-uritemplate-must-be-defined-in-the-operation-and-vice-versa/