gpt4 book ai didi

c# - 在 REST Api 调用中传递字典或对象?

转载 作者:行者123 更新时间:2023-11-30 18:38:28 25 4
gpt4 key购买 nike

我正在为我的业务开发一个 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 序列化为字典,然后创建从字典中提取属性的对象?

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

最佳答案

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

关于c# - 在 REST Api 调用中传递字典或对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11221890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com