我目前正在研究一個接受大量數據並對數據執行幾種不同類型分析的API。我認爲只提供一個API調用並讓該調用接受數據和一系列操作(即分析類型)是有意義的,而不是強迫客戶爲他們希望執行的每種分析傳遞一次數據,去表演。 (這意味着我的API不是RESTful的,對嗎?)這樣我會失去一些清晰的功能,但處理時間的增加很容易彌補這一點。設計一個數據驅動的JSON API
我的問題是關於如何將請求格式化爲JSON。如果客戶端只需要POST數據元素數組和一系列操作來執行,那麼格式化將很容易。不幸的是,一些分析類型有需要設置的選項。我看到了一些前進的方法。
獨立行動和選擇項目:
{ 'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}], 'actions': ['analysis_a', 'analysis_b', 'analysis_c'], 'options': {'option_c': 'blah'} }
這是給文檔需要注意的是
option_c
只需要如果啓用analysis_c
進行設置。獨立行動和選擇的項目,有選擇明確綁到一個動作:
{ 'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}], 'actions': ['analysis_a', 'analysis_b', 'analysis_c'], 'options': {'analysis_c': {'option_c': 'blah'}} }
獨立動作/選項的項目,與項目同時作爲列表和字典:
{ 'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}], 'actions': {'analysis_a': {}, 'analysis_b': {}, 'analysis_c': {'option_c': 'blah'}} }
具有更多數據結構清晰度的單個動作/選項:
{ 'data': [{'id': 1, 'content': 'blah'}, {'id': 2, 'content': 'blah}], 'actions': [ {'action': 'analysis_a'}, {'action': 'analysis_b'}, {'action': 'analysis_c', 'options': {'option_c': 'blah'}} ] }
選項1可能是我最不喜歡的,但在不久的將來,我們的一些分析類型將要求設置相同的選項(必須具有相同的值),並且這種情況有點容易處理與選項#1。
我很破,所以任何想法或建議將不勝感激。謝謝!