Api 复杂数据结构的REST解决方案

Api 复杂数据结构的REST解决方案,api,rest,Api,Rest,我目前正在设计一个API,我们倾向于使用REST解决方案。一个关键问题是传递的参数是复杂的数据类型,包括嵌套散列、散列数组的散列等。原理是用户应该能够用最少数量的API调用完成任务 我见过的一种常见解决方案是发布序列化数据,但是,这需要客户机管理序列化他们自己的数据。我们当前的API使用XMLRPC,客户机可以只使用兼容的客户机,而不用担心序列化 我的问题是,对于社区,对于其他必须想出解决方案来解决这个问题的人,你做了什么?成本/权衡是什么?你会有什么不同的做法 谢谢:)REST是关于通过网络传

我目前正在设计一个API,我们倾向于使用REST解决方案。一个关键问题是传递的参数是复杂的数据类型,包括嵌套散列、散列数组的散列等。原理是用户应该能够用最少数量的API调用完成任务

我见过的一种常见解决方案是发布序列化数据,但是,这需要客户机管理序列化他们自己的数据。我们当前的API使用XMLRPC,客户机可以只使用兼容的客户机,而不用担心序列化

我的问题是,对于社区,对于其他必须想出解决方案来解决这个问题的人,你做了什么?成本/权衡是什么?你会有什么不同的做法


谢谢:)

REST是关于通过网络传输资源状态表示的。所以不要考虑参数,想想你的资源是什么,以及这些资源的最佳表示形式是什么

请记住,表示传输有两种方式——客户端可以发送所需资源状态的表示,以便创建或更新资源。这就是POST和PUT的用途

另外,不要忽视资源提供/支持多种表示格式(内容类型)的价值。我构建了许多API,其中资源可以为浏览器提供HTML表示,或者为编程使用提供JSON或XML表示


更具体地说,对于您描述的数据结构类型,我建议使用JSON。它简单、清晰、易于在任何平台上使用,并且简洁、直接地支持这些结构。

JSON和XML完全符合您的问题-我会使用JSON,它也可以在浏览器上下文中轻松解析(XML处理效率较低)。当您获取、发布等复杂数据时,它将在请求/响应体中传输,这很好。保留您的URL参数以用于检索和发布属性