c# - 如何更改 WebAPI 2 路由中的参数名称
问题描述
使用默认路由
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我可以达到像 GET http://ip:port/api/dogs/Henry这样的隐式操作:
public class DogsController:ApiController
{
public Dog Get(string id) => DogRepository.GetDog(id);
}
但是,据我所知,这需要动作参数名称与路由定义匹配:“id”。我喜欢描述性的参数名称,那么如何将参数名称从“id”更改为“dogName”?
我知道一个控制器和一个路由很明显,但我的 api 中可能有猫、金鱼和大象,所以“dogName”在所有情况下都不是描述性参数名。
解决方案
您可以使用该FromUriAttribute.Name
属性:
public Dog Get([FromUri(Name = "id")]string dogName) => DogRepository.GetDog(dogName);
请注意,在 ASP.NET Core 中,调用了相应的属性,FromRoute
但行为基本相同(在这种情况下)。
推荐阅读
- javascript - 监听未附加元素的点击事件
- visual-studio-code - 在调试之前尝试使用任务启动服务器时“无法跟踪指定的任务”
- python - Python psycopg2 动态 where 子句,带有基于条件的可选 AND
- php - 在多维数组中查找一个值并保持结构
- c++ - 我应该如何格式化具有所有不同链表的命名空间?
- python - 在 Python 中加快成对模糊字符串匹配
- javascript - 当另一个协程已经在等待下一条消息时,我不断收到错误无法调用 recv()
- typescript - Typescript:如何仅从类型中提取可选键?
- javascript - 如何使用 javascript 将数组添加到我的 html
- .net - 是否可以从 JsonProvider 获取文字?