0

对于实际上不更新数据的 API 调用,是否存在通常商定的响应代码?例如,一个文本字段当前是“blah”并且用户点击“edit”和“save”,API 是否应该返回 200,即使它之前的值没有发生任何变化?

似乎如果要发送 2xx 响应,让用户知道什么都没有更新,或者首先不发送 API 调用的唯一方法是完全管理前端的状态,然后允许调用只有在没有任何改变的情况下才能通过?或者只让后端抛出 4xx 是否合适,因为数据不是真正有效的,因为它与以前相同?

4

1 回答 1

0

这取决于您要实现的目标。如果您希望更新该值,您可以使用适当的状态码来处理它。如果值更新正常并且它没有在数据库中更新,您还可以处理状态代码以了解为什么它没有在数据库中更新。你可以这样做:

    [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(错误请求)。当它有效并且有错误时,状态码将返回 500 并且错误将在后端显示给您,否则(如果没有错误)然后 204 被修改。现在,如果您想在 API 中执行更新而不更新表,最好使用存储过程并以最简单的方式调用它。我希望我回答了你的问题

于 2018-11-30T15:48:00.303 回答