2012-09-26 38 views
0

我正在PHP中構建一個RESTful Web服務,它接受JSON作爲其有效負載 。 現在,我的問題是,我如何向用戶描述JSON請求的格式?我是JSON新手,不認爲我有100%的把握。JSON數據到Web服務 - 如何定義預期的JSON數據

其他用戶系統會基本上用我需要的鍵值對創建一個數據結構(如數組),用JSON對其進行編碼並將其發送到我的Web服務?

難道我真的給他們一個數組需要看起來像樣的副本嗎? 謝謝!

+1

REST服務通常會**輸出** JSON編碼的數據;你真的把**輸入**作爲JSON編碼(而不是標準的GET查詢參數或POST數據值?)? – MidnightLightning

+0

什麼是最常見的?如果POST值是標準的,那麼我會去做。該服務將接受許多產品代碼/數量。你如何通過POST傳遞這些數據?例如:product_1 = item1&product_1_qty = 2&product_2 = item2&product_2_qty = 5? – Lock

+0

對於更新數據,是的,POST是通用的,並且是RESTful方法所必需的;請參閱我的回答以獲得完整說明 – MidnightLightning

回答

1

遵循REST準則,您從API用戶那裏得到的輸入應該是URL的一部分(對於GET請求;不更新數據,即http://example.com/api/doc/1243),或者應該是POST變量(在HTTP請求的主體中發送到相同的URL)。

所以對於文檔,你應該需要做的是表明端點URL(http://example.com/api/doc/1243),他們需要使用POST的事實,而這些變量是什麼(即titlebodyauthor等)。然後,用戶將形成然而正確的HTTP請求,他們希望,並在您的服務器端,因爲你正在使用PHP,你會從$_POST陣列(即$_POST['title']$_POST['body']等)

+0

Thankyou-非常好的答案。因此,比如說購物車,如何將產品傳遞到查詢字符串中(因爲可能有很多產品?)。你是否做了類似「product_1 = test&product_1_qty = 4&product_2 = test2&product_2_qty = 9?etc?」的產品 – Lock

+0

若要將產品添加到購物車,可以按照這種方式進行組織,或者讓最終用戶多次調用「添加到購物車」方法,每個產品一次:Endpoint'/ api/cart/1243/add'帶有數據'product_id'和'quantity',但需要多次調用 – MidnightLightning

1

Dropbox是拉自己的變量一個使用JSON作爲有效載荷的restful api的好例子。

您還將瞭解如何爲API編寫文檔。

+1

Thankyou-這是一個很好的例子。 – Lock