You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Autorest Directive解决参数重名导致的编译错误

解决Autorest转换Swagger YAML到PowerShell模块时的参数重名问题

问题场景

在将包含重名参数的Swagger YAML转换为PowerShell模块时,遇到编译错误:

error CS0100: The parameter name 'token' is a duplicate.

问题源于YAML中同时存在一个路径参数token和一个查询参数token,二者均为必填项:

parameters:
  - description: token
    in: path
    name: token
    required: true
    schema:
      type: string
  - description: <a href="(url edited)"  target="_blank">Generate your application key</a>
    in: query
    name: key
    required: true
    schema:
      type: string
  - description: <a href="(url edited)"  target="_blank">Getting a token from a user</a>
    in: query
    name: token
    required: true
    schema:
      type: string

Autorest生成的C#代码中会出现重复的token参数,导致编译失败。

解决方案

使用Autorest的directive配置规则,在不修改原Swagger文件的前提下,为重名的查询参数重命名。

步骤1:创建Autorest配置文件

新建autorest.yml(或在现有readme.md中添加),添加以下directive规则:

directive:
  - from: swagger-document
    where: $.paths.*.*.parameters[?(@.name == 'token' && @.in == 'query')]
    transform: >
      $["x-ms-client-name"] = "userToken";

该规则会定位所有操作中名称为token且位置为query的参数,通过x-ms-client-name扩展指定生成代码时使用的参数名(这里改为userToken,可根据需求自定义)。

步骤2:应用配置生成代码

运行Autorest命令时指定配置文件:

autorest --powershell --input-file=your-swagger.yml --output-folder=./ps-module-output --config-file=autorest.yml

效果验证

生成的C#代码中,参数将变为string token(路径参数)、string userToken(查询参数)、string key,避免了重名问题,模块可正常构建。

内容的提问来源于stack exchange,提问作者Nico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:40:02