首页 > 解决方案 > Nswag 生成 get 方法的重复版本

问题描述

我有 .net core web api 基本项目。我向它添加了招摇。现在我想生成打字稿客户端以在角度中使用它。我正在使用 NSwag 工作室。API 如下所示:

public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(int id)
        {
            return "value";
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }

当我使用 NswagStudio 生成打字稿客户端时,它会生成两个版本的 get 方法,由于不支持方法重载,导致打字稿出错。我想为每个控制器生成客户端类,所以我设置了操作生成模式:“MultipleClientsFromPathSegments”。生成的结果是:

export class ApiClient {
  valuesGet(): Observable<string[]> {}
 protected processValuesGet(response: HttpResponseBase): Observable<string[]>{}

valuesPost(value: string | null | undefined): Observable<void>{}
protected processValuesPost(response: HttpResponseBase): Observable<void>{}

valuesGet(id: number): Observable<string>{}
protected processValuesGet(response: HttpResponseBase): Observable<string>{}
}

我想生成第一个名称为“getAll”的 get,因为它应该是。任何人都有想法。谢谢

标签: angulartypescriptasp.net-core

解决方案


尝试将字符串传递给 HttpGet(这也会更改 url)

// GET api/values
[HttpGet("GetAll")]
public ActionResult<IEnumerable<string>> Get()
{
    return new string[] { "value1", "value2" };
}

推荐阅读