2017-10-10 89 views
1

我想構建一個REST端點到檢索對象,但我需要發送結構化數據作爲查詢參數(例如列表)。我想知道這些數據是否可以作爲請求主體發送(參見下面的示例)。我應該如何處理這個問題才能遵守REST的良好做法?我應該使用哪個HTTP動詞?如何將結構化數據發送到檢索對象的REST端點?應該使用哪個HTTP動詞?

URI:

http://localhost:8080/products 

請求正文:

{ 
    "name" : "Computer", 
    "categories" : [ 
     { 
      "id" : 1 

     }, 
     { 
      "id" : 4 
     } 
    ] 
} 

響應:

[ 
    { 
     "id": 2, 
     "name": "Computer XP 2040", 
     "price": 800 
    }, 
    { 
     "id": 1, 
     "name": "HP Computer", 
     "price": 2000 
    }, 
    { 
     "id": 7, 
     "name": "Smart Computer", 
     "price": 1200 
    } 
] 
+0

POST將是正常的 – James

+0

我擔心職位,因爲我的搜索是冪等也是我沒有創建資源。 –

回答

1

POST是不是這個正確的。如果你想堅持RESTful最佳實踐,你必須在uri中編碼信息。

請注意,POST可能會更好,如果你不想這樣做,但因爲這個問題是關於REST最佳實踐(而不是一般的HTTP服務),所以POST是你的目標。

我只想這個編碼爲:

GET /products?name=Computer&categories=1,4 
+0

您能否提供「如果您想堅持RESTful最佳實踐,您必須在uri中對信息進行編碼」。 –

+0

@EricStein從字面上看REST的任何介紹都會告訴你這個Eric。 GET =用於檢索信息。 – Evert

+0

@EricStein這裏有一個非常有信譽的:https://martinfowler.com/articles/richardsonMaturityModel.html – Evert

相關問題