在 Web API 中使用 Route 属性的可选参数?

msh*_*hwf 4 asp.net asp.net-web-api

我希望两种模式的 API url 指向同一个 API 操作方法:

api/Cities/{countryCode}
Run Code Online (Sandbox Code Playgroud)

和

api/Cities
Run Code Online (Sandbox Code Playgroud)

这可以使用Route属性进行配置吗?

我做了这个但没有用:

   [HttpGet, Route("GetCities/{code?}")]
        public dynamic GetCities(string code)
        {
            return GENOrderRepository.SelectCities(Context, code);
        }
Run Code Online (Sandbox Code Playgroud)

Ako*_*agy 10

只需创建一个操作方法,并像这样使用路由属性:

Route[("api/Cities/{countryCode?}")]
Run Code Online (Sandbox Code Playgroud)

(注意最后的问号,这使得参数可选)。您还必须为参数提供一个默认参数。查看我的工作示例:

 [HttpGet, Route("GetCities/{code?}")]
 public IHttpActionResult GetCities(string code=null)
 {
     return Ok();
 }
Run Code Online (Sandbox Code Playgroud)