WCF WebApi, как правильно обрабатывать запрос IsThisTaken? - PullRequest
1 голос
/ 18 января 2012

Я нахожусь в процессе написания веб-приложения WCF и мне нужно проверить, занят ли адрес электронной почты или нет.Это должен быть запрос, который клиентский код может выполнить перед попыткой 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);
    }

Мне это просто не "пахнет".да / нет правильная операция?

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Я предлагаю вернуть HttpResponseMessage вместо выдачи исключений.Ваш RestValidationFailureException обрабатывается где-нибудь?Если нет, это приведет к 500 кодам состояния, которые не кажутся адекватными.

2 голосов
/ 18 января 2012

Я думаю, что было бы хорошо просто вернуть OK для "существует" и 404 для "не существует"

...