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

本文关键字:一个 端点 多用途 创建 何使用 WebAPI 参数 | 更新日期: 2023-09-27 17:51:17

感谢您的关注。

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

[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

<标题>解决!

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

我正要写完这个问题,突然发现了答案。基本上,特殊字符在URL请求路径中不能很好地工作。我使用了一个查询字符串,并将代码修改为:

 [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);
        }
    }

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

干杯!