Какой код ответа должен возвращать API для значения, которое было обновлено, но не изменилось? - PullRequest
0 голосов
/ 30 ноября 2018

Существует ли обычно согласованный код ответа для вызова API, который фактически не обновляет данные?Например, текстовое поле в настоящее время «бла» и пользователь нажимает «изменить» и «сохранить», должен ли API возвращать 200, даже если ничего не изменилось по сравнению с его предыдущим значением?

Кажется, если бы он был отправленответ 2xx - единственный способ сообщить пользователю, что ничего не обновлено, или вообще не отправлять вызов API, - это полностью управлять состоянием в веб-интерфейсе, а затем разрешить этому вызову проходить, только если ничего не изменилось?Или было бы уместно, чтобы бэкэнд бросил 4xx, поскольку данные на самом деле не действительны, поскольку они были такими же, как и раньше?

1 Ответ

0 голосов
/ 30 ноября 2018

Это зависит от того, чего вы достигнете.Если вы хотите, чтобы значение было обновлено, вы можете обработать его с помощью правильного кода состояния.И если значение обновляется нормально и не обновляется в базе данных, вы также обрабатываете код состояния, чтобы узнать, почему оно не обновляется в базе данных.Вы можете сделать что-то вроде этого:

    [Route("PutData")]
     public HttpResponseMessage PutData(model obj)
     {
        if (ModelState.IsValid)
        {
            try
            {
                model newobj = new model();

                newobj.a = obj.a;
                newobj.b = obj.b;

                DBContex context = new DBContex();

                context.ProcName(newobj.a, newobj.b);
            }
            catch (Exception ex)
            {
                return Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
            }

            return Request.CreateResponse(HttpStatusCode.NoContent);
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest, ModelState);
        }
    }

Я надеюсь, вы понимаете, что я вставил в свой код.когда состояние модели действительно, пройдите через код, иначе верните 400 (Bad Request).Когда он действителен и возникла ошибка, код состояния вернет 500, и ошибка будет показана вам на другом сервере (если ошибки нет), затем 204, который изменяется.Теперь, если вы хотите выполнить обновление в API без обновления таблицы, лучше использовать хранимую процедуру и просто вызывать ее самым простым способом.Надеюсь я ответил на ваш вопрос

...