2016-09-26 50 views
1

根据我的理解,你不应该发布数据。 例如,我在一个项目中,我们正在发布以获取数据。REST - 发布以获取数据。这还能做什么?

例如,下面这个。

{ 
    "zipCOde":"85022", 
    "city":"PHOENIX" 
    "country":"US" 
    "products":[ 
     { 
     "sku":"abc-21", 
     "qty":2 
     }, 
     { 
     "sku":"def-13", 
     "qty":2 
     } 
    ] 
} 

是否有意义发布?这怎么可能没有发布?可能有1个或更多产品。

+0

完全有道理,当你需要复杂的查询,你可以为了得到数据,如弹性搜索[设计的RESTful查询API的 –

+0

可能的复制与查询一长串建立以JSON格式和POST查询REST参数](http://stackoverflow.com/questions/14202257/design-restful-query-api-with-a-long-list-of-query-parameters) –

回答

0

一个潜在的选择是JSON.serialize您的对象,并将其作为GET的查询字符串参数发送。

0

实际上在HTTP中有一个SEARCH方法,但遗憾的是它是用于webdav的。 https://msdn.microsoft.com/en-us/library/aa143053(v=exchg.65).aspx所以如果你想发送请求的请求体,那么你可以试试这个。

如果您有复杂的搜索,发布是可以的。复杂的搜索是相对的,在我看来,这意味着在查询中有不同的逻辑运算符。

当前不是那么复杂,您可以将非分层组件放入URI的查询字符串中。附加换行符的示例:

GET /products/? 
    zipCOde=85022& 
    city=PHOENIX& 
    country=US& 
    filters[0]['sku']=abc-21& 
    filters[0]['qty']=2& 
    filters[1]['sku']=def-13& 
    filters[1]['qty']=2 

如果需要,您可以选择不同的序列化格式并将其编码为URI组件。

GET /products/?filter={"zipCOde":"85022","city":"PHOENIX","country":"US","products":[{"sku":"abc-21","qty":2},{"sku":"def-13","qty":2}]}