我正在尝试让它工作:
[Route("api/Default")]
public class DefaultController : ApiController
{
[HttpGet, Route("{name}")]
public string Get(string name)
{
return $"Hello " + name;
}
}
通过调用这个 http://localhost:55539/api/Default?name=rami
但是没有用,也试过这个:http://localhost:55539/api/Default/Hello?name=rami
,这也不起作用:http://localhost:55539/api/Default/Hello/rami
最佳答案
确保在 WebApiConfig.cs 中启用属性路由
config.MapHttpAttributeroutes();
ApiController 操作可以分配多个路由。
[RoutePrefix("api/Default")]
public class DefaultController : ApiController {
[HttpGet]
//GET api/Default
//GET api/Default?name=John%20Doe
[Route("")]
//GET api/Default/John%20Doe
[Route("{name}")]
public string Get(string name) {
return $"Hello " + name;
}
}
还有使参数可选的选项,这样您就可以在不使用内联参数的情况下调用 URL,并让路由表使用类似于基于约定的路由的查询字符串。
[RoutePrefix("api/Default")]
public class DefaultController : ApiController {
[HttpGet]
//GET api/Default
//GET api/Default?name=John%20Doe
//GET api/Default/John%20Doe
[Route("{name?}")]
public string Get(string name = null) {
return $"Hello " + name;
}
}
关于c# - 如何使用 Route 属性将查询字符串与 Web API 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199946/