2017-07-21 98 views
0

我正在向REST API發出POST請求。此POST調用在HTTP狀態200的第一次嘗試中成功,並且我得到正確的結果。但是,當我進行下一個和後續的調用時,會收到HTTP 400錯誤請求錯誤。 爲什麼上次調用成功時它是錯誤的請求? 當搜索Bing時,我發現這可能與提交相同的請求有關。如果我更改有效負載中的某個參數,則調用成功。第一個REST API POST請求成功,但隨後的調用失敗,出現400錯誤請求

有什麼想法可能導致這種情況?我在請求標題中缺少某些內容嗎?

這是我的POST調用。

POST http://myServer/v1.0/something/queries HTTP/1.1 
Host: myServer 
Authorization: Bearer some big token 
Content-Type: application/json 
Content-Length: 72 

{ 
     "field1": { 
      "Id": "12345" 
     }, 
     "count": 1 
} 
+1

你有沒有關於你的API可以共享的實現的細節?它基於Java還是Python?你在使用框架嗎?你爲什麼使用POST來檢索數據? – ARJMP

+0

這是基於c#的。提供的API只支持POST。 – khar

回答

1

在有很多的API,POST數據進行檢查,以確認它是不是重複。這對於某些類型的業務邏輯很重要,例如確保只有一個用戶使用某個電子郵件地址。在您的請求中,我想象它可能是導致HTTP 400 Bad Request"Id"字段,因爲系統中已有一個對象,其中包含"Id"

+0

這個調用基本上返回了當id = 12345的一些商業數據,我會認爲這是非常基本和簡單的情況。想象一下你有購物網站,同一個產品(ID = 12345)可以多次查看。 (順便說一句,爲了簡單起見,我把POST中的「id」字段作爲示範目的)。 – khar

+0

那麼在這種情況下,您應該使用GET,因爲POST是在REST規範中爲數據創建指定的。 – mattjegan

+0

不幸的是,GET不支持我的場景..我得到錯誤說「方法不支持」。我們的UI應用程序還沒有準備好,所以我使用Fiddler/Postman來打這些電話......不知道這是否重要。 – khar

相關問題