0

对于订单管理应用程序,我需要设计适用于JSON的RESTful API。REST JSON API设计

我宁愿我的API是这样的,因此请求/响应包含JSON:

订单查询API

API: /orders/search 
      { 
       custname: "john", 
       orderdate: "10-jun-2013" 
      } 
    Response: 
      { 
      orders:[ 
       { 
       orderid:234234, 
       orderstatus: NEW, 
       customer: "john" 
       } 
      ] 
      } 

订购更新API

API: /orders/343455   
Request Body: 
    { 
      orderstatus: "DELIVERED", 
      recepient: "joe"   
    } 
Response: 
    { 
     status: ERROR, 
     message: "Order does not exist" 
    } 

问题
1.如何在GET请求中发送JSON(如在订单搜索API中)。
2.我甚至想让每个请求都是一个POST请求,并在主体中有JSON请求,提示操作是什么 - 但是这仍然是REST(也许是'RESTful Web-Service'或'REST like Service') ?
3.我认为它对我来说很重要,在大多数请求中发送JSON,这样我的API实现不会发生太多变化,只是因为我添加了删除attribs到JSON消息。
4.有没有任何其他人做过的例子,尤其是返回错误信息。

有什么想法?

回答

0

1)如何发送GET请求中的JSON(如在订单搜索API中)。

据我所知,HTTP 1.1不明确禁止GET方法的请求主体。

但是,意见是否建议不同。

GET请求应该(必须)是idempotent,但是 - 特别是在REST上下文中,并且为了允许缓存。

请参阅SO HTTP GET with request body等许多其他问题。

如果无法在GET方法中指定请求主体,无论出于何种原因,都需要在URL查询中包含参数 - 正确编码(这很痛苦)。

2)我想即使做的每一个请求POST请求

我不会那么做的。 Web服务框架期望使用相应的HTTP方法执行某些类型的请求。这是针对REST的,例如一个POST请求,实际上一个GET不会被缓存。这也是针对HTTP的。