基于属性的路由,参数与变量的名称不同-ASPNETCore

时间:2019-01-09 15:43:18

标签: .net-core swagger nswag

我需要这样做

[Route("/api/highfive/{person_name}")]
public IActionResult HighFive(string personName){
   //do stuff
}

是否可以将变量personName映射到路线中作为person_name提供的内容?

下面两个选项都可以工作-只要route参数和变量名之间存在匹配(这是有道理的)。

[Route("/api/highfive/{person_name}")]
public IActionResult HighFive(string person_name){
   //do stuff
}

[Route("/api/highfive/{personName}")]
public IActionResult HighFive(string personName){
   //do stuff
}
  

但是为什么要这样?

  • Swagger生成的文档必须与以前的API匹配,正在替换-并且它使用route中的变量名来生成文档。

  • 使用person_name作为变量名违反了我们的命名约定

  • 是的,这很愚蠢-但是如果我不知道有一个简单的解决方法,那将非常棒。

1 个答案:

答案 0 :(得分:1)

binding source attributes允许配置用于模型绑定的名称。在您的示例中,您从路由中获取值,这意味着您可以在参数上使用FromRoute属性:

[FromRoute(Name="person_name")] string personName