我正在编写WCF webapi应用程序,需要检查是否已收到电子邮件地址。这需要是客户端代码在尝试PUT
之前可以执行的查询。
所以,我要做的是将HEAD
与HTTP状态代码结合使用。我有点不确定如何去做,因为它是一个简单的是/否响应是必需的。所以,我使用HttpResponseExceptions
来返回相关的状态代码。
[WebInvoke(Method = "HEAD", UriTemplate = "{email}")]
[RequireAuthorisation]
public void IsEmailAddressTaken(string email)
{
if (!Regex.IsMatch(email, Regexes.EmailPattern))
{
throw new RestValidationFailureException("email", "invalid email address");
}
if (_repository.IsEmailAddressTaken(email))
{
throw new HttpResponseException(HttpStatusCode.OK);
}
throw new HttpResponseException(HttpStatusCode.NoContent);
}
这对我来说并不“闻”。
我正在以正确的方式做这种是/否操作吗?答案 0 :(得分:2)
我认为只要为“存在”返回OK就可以了,而对于“不存在”则返回404
答案 1 :(得分:2)
我的建议是返回HttpResponseMessage
而不是抛出异常。
你的RestValidationFailureException
在哪里被处理?如果没有,它将导致500状态代码,这似乎不够。