3

我正在为我的业务开发一个 REST Api(使用 C#)并试图保持它相当干净和简单。我正在努力的设计决策之一是说你有一个资源 uri:

www.mydomain.com/Api/Orders

因此,要创建一个订单,您需要通过以下 json 对此 uri 进行 POST:

{
   "ProductNumber": "12345A",
   "Quantity": 5
   "Cost" : 250.5
   "CustomerId" : "912AFD52-8F2F-43A2-87FF-EB65D0A8FD8C"
   ...etc
}

但是在服务器端,我最初认为确保传入的 json 序列化到底层对象模型是一个多么好的主意,然后我可以直接使用该对象。然而,像 Id、CreatedOn、ModifiedOn 等这样的问题一直存在。

在我的对象模型中,我希望在创建对象时生成 Id,并在将其插入数据库时​​设置 CreatedOn 等。所以理想情况下,我希望这些属性是只读的,但是如果它们是只读的,那么当 json 序列化为一个对象时,就不会填充 Id。如果不让它们只读,那么可能有人可以在 json 中触发并更改这些属性。

所以我在想我是否最好将json序列化为字典,然后创建从字典中提取属性的对象?

老实说,我对整件事有点困惑。

4

1 回答 1

0

仅仅因为有人在对您的服务的请求中说了些什么并不意味着您必须这样做。一种简单的方法是创建一个他们可以设置的属性的白名单,并通过对象的键并删除白名单上的所有内容。然后,在其中填写您需要但由服务器生成的值。(您还应该验证允许的键值的格式是否符合您的预期。)

于 2012-06-27T08:15:14.447 回答