使用不同基URL的Azure API-M API和操作

a2mppw5e  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(89)

在Azure API-管理中,如果我们有一个API集和2个API操作,则会执行相同的操作,但新版本现在指向一个全新的端点。
例如下面是BICEP代码:
//API设置

resource regApi 'Microsoft.ApiManagement/service/apis@2022-08-01' = {
  name: 'register-api-transaction'
  parent: apimService
  properties: {
    displayName: 'Register APIs'
    apiRevision: '1'
    subscriptionRequired: true
    serviceUrl: registerServiceUrl
    path: 'internal/register/search'
    protocols: [
      'http'
      'https'
    ]
    authenticationSettings: {}
    subscriptionKeyParameterNames: {
      header: 'Ocp-Apim-Subscription-Key'
      query: 'subscription-key'
    }
    isCurrent: true
  }
}

字符串
操作:

resource regGetApi 'Microsoft.ApiManagement/service/apis/operations@2021-08-01' = {
  name: 'name-register-get'
  parent: regApi 
  properties: {
    urlTemplate: '/nameRegister'
    method: 'GET'
    displayName: 'Name register'
    responses: []
  }
}

resource searchGetApi 'Microsoft.ApiManagement/service/apis/operations@2021-08-01' = {
  name: 'name-search-get'
  parent: regApi 
  properties: {
    urlTemplate: '/nameSearch'
    method: 'GET'
    displayName: 'Name search'
    responses: []
  }
}


问:
如果操作指向不同的serviceUrl,那么我想指向一个呢?两个都指向同一个父对象。

  • 我不想创建新的API集
  • 我可以在这种情况下使用版本控制吗?新版本将有一个全新的基础URL?
9udxz4iz

9udxz4iz1#

是的,在这种情况下,您可以使用versioning,因为版本控制用于进行API更改。
您可以同时发布多个API版本,并使用路径、查询字符串或头来区分版本。
要将其重定向到不同的服务URL,您也可以使用set-backend-service策略,如给定的MS Doc中详细说明的那样。
一旦进行了更改,您还可以添加Versioning scheme,它是表示现有API的新版本的标识符。

  • 我在我的环境中尝试了下面的代码,符合您的要求,部署成功,如下所示。*
param apiexists string = 'xxxx'
resource apiservice 'Microsoft.ApiManagement/service@2023-03-01-preview' existing = {
  name: apiexists
}
resource regApi 'Microsoft.ApiManagement/service/apis@2022-08-01' = {
  name: 'register-api-transaction'
  parent: apiservice
  properties: {
    displayName: 'Register APIs'
    apiRevision: '2' 
    subscriptionRequired: true
    serviceUrl: '' // Modify this for the new version
    path: 'internal/register/search'
    protocols: [
      'http'
      'https'
    ]
    authenticationSettings: {}
    subscriptionKeyParameterNames: {
      header: 'Ocp-Apim-Subscription-Key'
      query: 'subscription-key'
    }
    isCurrent: true
  }
}
//Operations
resource regGetApiV2 'Microsoft.ApiManagement/service/apis/operations@2021-08-01' = {
  name: 'name-register-get'
  parent: regApi 
  properties: {
    urlTemplate: '/nameRegister'
    method: 'GET'
    displayName: 'xxx'
    responses: []
  }
}

resource searchGetApiV2 'Microsoft.ApiManagement/service/apis/operations@2021-08-01' = {
  name: 'name-search-get'
  parent: regApi 
  properties: {
    urlTemplate: '/nameSearch'
    method: 'GET'
    displayName: 'xxx'
    responses: []
  }
}

字符串
在上面的代码中,我通过将apiRevision: '2'serviceUrl修改为newServiceUrl,创建了新版本的API。
如果要使用基于路径的版本控制方案,请将版本号(例如:"/v2")添加到API的路径中以指示版本。

  • 输出:*


的数据


相关问题