[英]What is the best practice in REST-Api, to pass structured data or key-value pair?
我有一个类似于下面给出的数据结构,我应该处理它。 我正在设计一个 API,它应该接受类似于下面给出的 POST 请求。 (忽略标题等)
{ "Name": "Johny English", "Id": "534dsf", "Message":[ { "Header":"Country of origin", "Value":"England" }, { "Header":"Nature of work", "Value":"Secret Agent/Spy" } ] }
有些我不觉得,这是传递/接受数据的正确方法。 在这里,我谈论的是结构化数据与键值对。 虽然我可以将字段(“Name”、“Id”)直接提取到 object 属性,但对于键值对,我需要遍历集合并与字符串(例如“工作性质”)进行比较以提取价值观。
我搜索了几个站点,寻找任何最佳实践,无法得出任何结论。 是否有任何最佳实践、建议等。
我认为您不会找到任何坚定的、基于证据的 arguments 反对在您的消息模式中包含键值对列表。 但这正是需要寻找的东西——人们撰写有关消息模式设计的文章,以及如何设计消息以支持更改等等。
实际上,并没有太大的区别
{
"Name" : "Johny English",
"Id": "534dsf",
"Message":[
{
"Header":"Country of origin",
"Value":"England"
},
{
"Header":"Nature of work",
"Value":"Secret Agent/Spy"
}
]
}
或者
{
"Name" : "Johny English",
"Id": "534dsf",
"Message": {
"Country of origin": "England",
"Nature of work": "Secret Agent/Spy"
}
}
在世界范围内的 web 的早期,“一切”都是键值对,因为很容易以通用组件(如 web 浏览器)可以使用它的方式描述键值对的集合(即,HTML 形式的定义)。 它完成了工作。
通常最好将响应数据的结构与您期望的相应 POST、PUT 和 PATCH 端点的输入相同。 这允许记录更改不需要消费实体首先转换数据。 因此,在这种情况下,具有“名称”/“值”字段的对象的 arrays 更容易编写输入验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.