gpt4 book ai didi

c# - 如何区分重载函数的 ASP.NET Core 基于属性的路由

转载 作者:行者123 更新时间:2023-11-30 20:28:01 25 4
gpt4 key购买 nike

重载函数是否可以区分API路由?

例如我有以下功能:

[HttpGet("filter")]
public JsonResult GetCity (int id) { ... }

[HttpGet("filter")]
public JsonResult GetCity (int id, string name) { ... }

如果用户调用它,我想调用第一个函数

http://localhost:5000/api/cities/filter?id=1

然后调用第二个

http://localhost:5000/api/cities/filter?id=1&name=NewYork

我们可以用建议的格式实现吗?

我的意思是 ?paramter=value 而不是像 http://localhost:5000/api/cities/filter/1/NewYork 这样的正斜杠

最佳答案

你不能有两个这样的 Action ,不。调用 Action 时,它只会查看是否提供了所需的参数,而忽略任何提供的 Action 不需要的参数。

因此调用 id=1&name=NewYork 将匹配到 GetCity (int id) 因为它只需要 id name 被忽略。

但是当然它也匹配 GetCity (int id, string name)

如果未提供name,您可以只保留一个操作并调用另一个方法,如下所示:

    [HttpGet("filter")]
public JsonResult GetCity(int id, string name) {
if (name == null) return GetCityWithId(id);
...
}

private JsonResult GetCityWithId(int id) {
...
}

关于c# - 如何区分重载函数的 ASP.NET Core 基于属性的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47943012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com