PATCH
オブジェクトを編集できるRESTスタイルのAPIを実装しています。この操作の目的はPATCH
、クラス内の 1 つ以上のプロパティを、設定可能な他のプロパティに影響を与えることなく更新できるようにすることです。
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
};
}
それは機能しますが、何かがおかしいと感じます。もっと良い方法があるに違いないと思いますか?