【发布时间】:2015-07-29 17:44:11
【问题描述】:
我有一个根据用户名或电子邮件检查用户是否存在的操作:
[Route("check/{usernameOrEmail}")]
[ResponseType(typeof(bool))]
public IHttpActionResult GetUserExists(string usernameOrEmail)
{
var user = db.Users.FirstOrDefault(u => u.Name == usernameOrEmail) ??
db.Users.FirstOrDefault(u => u.Email == usernameOrEmail);
if (user == null)
{
return Ok(false);
}
return Ok(true);
}
我目前使用的 AJAX 方法如下所示:
var url = "api/users/check/" + usernameOrEmail;
$.get(url, function (data) {
...//Do stuff
});
这对于一个简单的用户名非常有效,但是当使用诸如“test@test.com”之类的电子邮件时,我收到错误:
POST https://localhost:44301/api/users/check/test@test.com 404(未找到)
我相信这是因为 URL 中的 @ 符号。我知道我可以使用POST 而不是GET 并将usernameOrEmail 放在正文中,但我想尊重RESTful HTTP 动词。
有没有一种简单的方法可以编码 @ 符号(或任何其他符号)以在 URL 中发送并由我的 ApiController 解析?
【问题讨论】: