【发布时间】:2013-02-08 13:45:51
【问题描述】:
我正在实现一个允许对象被PATCH'ed 的 REST 样式 API。 PATCH 操作的目的是允许更新类中的一个或多个属性,而无需触及可能设置的其他属性。
这些是ServiceStack OrmLite 页面上的部分更新示例,但似乎需要硬编码来指示哪些字段将被部分更新。在我的场景中,由依赖应用程序决定发送哪些字段。
我还必须应对对象可能尚未持久化的情况。
为了解决这个问题,我实施了以下措施:
public object Patch(Myclass request)
{
HttpStatusCode SuccessCode;
try
{
var result = (MyClass)Get(request);
if (result != null)
{
request.PopulateWithNonDefaultValues(result);
dbFactory.Run(dbCmd => dbCmd.UpdateNonDefaults(request, r => r.myId == request.myId));
}
else
{
dbFactory.Run(dbCmd => dbCmd.Save(request));
}
SuccessCode = HttpStatusCode.Accepted;
}
catch (Exception e)
{
log.Error(e);
SuccessCode = HttpStatusCode.InternalServerError;
}
return new HttpResult()
{
StatusCode = SuccessCode
};
}
它有效,但感觉不对劲,我确定一定有更好的方法吗?
【问题讨论】:
标签: rest servicestack ormlite-servicestack