从 Azure autorest 中生成排除方法

Posted

技术标签:

【中文标题】从 Azure autorest 中生成排除方法【英文标题】:Exclude method from generating in Azure autorest 【发布时间】:2021-11-25 20:32:01 【问题描述】:

当尝试使用 Azure Autorest 为该规范生成 C# 代码时:

https://github.com/blend/blend-api-specs/blob/master/version_4/v4.2.0_stable.openapi_spec.yaml

我收到以下错误:

warning | Interpretations | Generating 'operationId' to 'Home Lending - Applications' for 'get' operation on path '/home-lending/applications/id/assignees' 
warning | Interpretations | Generating 'operationId' to 'Home Lending - Applications' for 'patch' operation on path '/home-lending/applications/id/assignees' 
warning | Interpretations | Generating 'operationId' to 'Home Lending - Applications' for 'put' operation on path '/home-lending/applications/id/assignees' 
warning | Modeler/MissingType | The schema 'paths·bz6x3r·home_lending-applications-id·patch·requestbody·content·application-json·schema·properties·loanamount·allof·1' has no type or format information whatsoever. Location:
   file:///home/XX/code/XX-platform/poc/integrations/providers/Blend.autorest/spec/v4.2.0stable.openapi_spec.yaml#/components/schemas/paths·bz6x3r·homelending-applications-id·patch·requestbody·content·application-json·schema·properties·loanamount·allof·1
error   | DuplicateOperation | Duplicate Operation '' > 'HomeLendingApplications' detected(This is most likely due to 2 operation using the same 'operationId' or 'tags'). Duplicates have those paths:
  - /home-lending/applications/id/assignees
  - /home-lending/applications/id/assignees
  - /home-lending/applications/id/assignees
fatal   | Error: 1 errors occured -- cannot continue.
fatal   | Process() cancelled due to failure 
  Error: Plugin checker reported failure.

由于我无法修改 YAML 文件(它是一个公共 API),有没有办法避免生成或忽略违规部分?也许使用指令?

【问题讨论】:

【参考方案1】:

在 Autorest github 问题板上询问后,有人建议我使用指令,它允许动态预处理规范。

directive:
  - from: openapi-document
    where: '$.paths["/home-lending/applications/id/assignees"].get'
    debug: true
    transform: |
      $["operationId"] = "lending-assignees-get";
  - from: openapi-document
    where: '$.paths["/home-lending/applications/id/assignees"].put'
    debug: true
    transform: |
      $["operationId"] = "lending-assignees-put";

此特定规范仍然包含导致 autorest c# 生成器失败的其他问题,但这些指令确实修复了原始问题。

【讨论】:

以上是关于从 Azure autorest 中生成排除方法的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中生成 SAS 令牌以下载 Azure 数据存储容器中的文件

技术帖 | 在 Azure 应用服务中生成 .NET Core 和 SQL 数据库 Web 应用

如何在 azure 存储 blob 中生成许可下载链接

Autorest 生成需要 beta 包的 Client Sdk

无法使用 Microsoft 示例在 Azure APIM 中生成 SAS

任务 - 在 Azure Synapse Serverless SQL 中生成脚本