如何使用带有可选参数的WebAPI 2创建真正的多用途端点?

时间:2015-05-29 18:27:10

标签: c# asp.net-web-api

感谢您的光临。

我正在尝试使以下代码工作:

[RoutePrefix("api/user")]
public class UserController : ApiController
{
[AllowAnonymous]
    [Route("{email}")]
    public IHttpActionResult Get(string email = null)
    {        
        if (!string.IsNullOrEmpty(email))
        {
            return Json(someUserProfileObject);
        }

        return Json(someListOfUserProfiles);
    }
}

每当我尝试访问/api/user/some@email.com时,我都会获得405

解决!

请在下面的答案中查看解决方案。

1 个答案:

答案 0 :(得分:0)

当我偶然发现答案时,我正准备完成这个问题。基本上,特殊字符don't work well in URL Request Paths。我使用了查询字符串,并将我的代码修改为:

 [RoutePrefix("api/user")]
    public class UserController : ApiController
    {
    [AllowAnonymous]
        [Route("")]
        public IHttpActionResult Get(string email = null)
        {        
            if (!string.IsNullOrEmpty(email))
            {
                return Json(someUserProfileObject);
            }

            return Json(someListOfUserProfiles);
        }
    }

现在一切正常,如果提供了查询字符串,我可以使用端点获取用户列表以及单个用户。

干杯!