0

我正在尝试设计一个可以与 Jersey 和 Jackson 一起使用的 JSON 对象。

我对 JSON / Restful 编程相当陌生,所以我想知道以下是否可行。

{
"name": "myservice",

"orders": [
    {
        "name": "iphone",
        "description": "iPhone 5",
        "providers": [
            {
                "name": "a",
                "description": "AT&T",
                "pricing": ["$40", "$70", "$120"]
            },
            {
                "name": "b",
                "description": "Verizon",
                "pricing": ["$45", "$60", "$85"]
            }
        ]
    },
    {
        "name": "galaxy3",
        "description": "Samsung Galaxy 3",
        "providers": [
            {
                "name": "a",
                "description": "AT&T",
                 "pricing": ["$45", "$60", "$85"]

            }
        ]
    }
]
}

获取有关 iPhone 的 Verizon 提供商的所有信息:

 curl GET -H'Content-Type: application/json' https://mydomain/myservice/iphone/b 

会返回:

{
   "name": "b",
   "description": "Verizon",
   "pricing": ["$45", "$60", "$85"]
}

获取 iPhone 的 AT&T 提供商的定价列表:

curl GET -H'Content-Type: application/json' https://mydomain/myservice/iphone/a?pricing 

将返回:

{

   ["$40", "$70", "$120"]

}

任何示例或反馈将不胜感激!

4

1 回答 1

0

这是关于定义 REST API 的一个很好的讨论:REST Complex/Composite/Nested Resources

这是我要在您的 json 中更改的内容: 1. 订单 -> 订单,因为资源被声明为单数名词 2. 提供者 -> 提供者,因为相同

如果我知道我需要得到什么(使用复合资源),这就是我从客户那里打电话的方式:

  1. https://<mydomain>/myservice/order/iphone/provider/b
  2. https://<mydomain>/myservice/order/iphone/provider/a/pricing

如果您需要搜索订单,您可以定义如下请求:

  1. https://<mydomain>/myservice/order?name=iphone-> 它将返回“订单”列表中的第一个元素

假设“名称”是各个资源(订单和提供者)的关键

于 2012-11-08T23:05:58.593 回答