对于实际上不更新数据的 API 调用,是否存在通常商定的响应代码?例如,一个文本字段当前是“blah”并且用户点击“edit”和“save”,API 是否应该返回 200,即使它之前的值没有发生任何变化?
似乎如果要发送 2xx 响应,让用户知道什么都没有更新,或者首先不发送 API 调用的唯一方法是完全管理前端的状态,然后允许调用只有在没有任何改变的情况下才能通过?或者只让后端抛出 4xx 是否合适,因为数据不是真正有效的,因为它与以前相同?
对于实际上不更新数据的 API 调用,是否存在通常商定的响应代码?例如,一个文本字段当前是“blah”并且用户点击“edit”和“save”,API 是否应该返回 200,即使它之前的值没有发生任何变化?
似乎如果要发送 2xx 响应,让用户知道什么都没有更新,或者首先不发送 API 调用的唯一方法是完全管理前端的状态,然后允许调用只有在没有任何改变的情况下才能通过?或者只让后端抛出 4xx 是否合适,因为数据不是真正有效的,因为它与以前相同?
这取决于您要实现的目标。如果您希望更新该值,您可以使用适当的状态码来处理它。如果值更新正常并且它没有在数据库中更新,您还可以处理状态代码以了解为什么它没有在数据库中更新。你可以这样做:
[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 中执行更新而不更新表,最好使用存储过程并以最简单的方式调用它。我希望我回答了你的问题