是否存在通常不会实际更新数据的API调用的通常同意的响应代码?例如,一个文本字段当前为“ blah”,并且用户单击“ edit”和“ save”,即使以前的值没有任何变化,API是否应该返回200?
似乎要发送2xx响应的唯一方法是让用户不知道任何内容已更新,或者首先不发送API调用,那就是完全管理前端的状态,然后允许只有在什么都没有改变的情况下才能通过的呼叫?还是只让后端抛出一个4xx,因为数据与之前的数据一样不是真的有效,这是否合适?
答案 0 :(得分: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中执行更新而不更新表,则最好选择存储过程,并以最简单的方式调用它。 希望我回答了你的问题