我創建了一個REST API,我認爲我被困在一個RESTful問題中。REST資源相關數據
它與下列問題有關:
我有一個資源被稱爲 「個案」。案例也有相關的數據,如用戶和消息。 問題是我想從案例中獲取相關的查詢用戶和消息數據,但我不確定使用URI設計。也有不同種類的相關/計算數據。應該使用這些相關數據來創建數據可視化。
我如何獲得案件/用戶/消息是,雖然REST風格:
http://example.com/cases (and with id for a single case)
http://example.com/cases/{id}/users (same idea as above)
http://example.com/cases/{id}/messages (same idea as above)
我的第一個想法創造相關資源是(我認爲URI看起來錯誤,它可能變得有點RPC):
相關數據1:
http://example.com/cases/{id}/analysis/messages-network-traffic
{
"sender": "an user jack",
"receiver": "an user steph",
"amount_messages": 51
},
{
"sender": "an user test",
"receiver": "an user test4",
"amount_messages": 3
}
...
相關數據2:
http://example.com/cases/{id}/analysis/messages-timeline?receiver=testuser1&sender=testuser2
{
"amount_messages": 24,
"timestamp": 1387321576
},
{
"amount_messages": 50,
"timestamp": 1387321576
}
...
這些URI設計是否正確?(我認爲它是RPC的一種),或者我該怎麼做? 因爲我沒有看到任何理由來創建像相關問題那樣的報表資源。數據只是對現有資源的計算。
預先感謝您。
我的例子是關於消息的,但它可以返回一個「case」的相關資源的所有相關計算數據。所有這些計算的數據結果都儘可能通用返回,但結果旨在創建分析工具(如圖形和內容)。對於每個圖形式,他們需要另一個結果。這就是爲什麼我通過以下方式將每個案例分開: _/analysis/a-graph-data-result-style_ –
這就是要點,你不應該這樣做。正如史蒂夫上面提到的,網址不應該是聲明性的。如果你想讓你的返回類型與圖表風格相關,你可以使用類似的方式: GET http://example.com/analysis/{graph-style}/cases/{id}/messages?receiver= testuser1&sender = testuser2 查看urls客戶端可以很容易地確定數據模型可能不會改變(這裏的數據格式總是「消息」的數據格式),但數據本身會根據他們要求的圖形樣式數據。 – shahshi15
但在大多數情況下,作爲服務提供者,您不應該擔心客戶端正在實施什麼樣的圖表風格。 Facebook/Google可能有一個由客戶開發的巨大應用程序,每個應用程序都執行它們自己的一組圖形(取決於用戶的用途)。如果他們開始爲每個客戶端提供圖形樣式自定義數據,那麼對於任何服務提供商來說都沒有意義。 – shahshi15