2011-07-06 33 views
1

我有這樣的事情.... 書籍: 我有一個PHP程序,只只接受POST請求...,鏈接是這樣的:如何將我當前的API更改爲寧靜的API?

http://www.mydomain.com/books.php 

如果用戶想以做出要求,他們需要做這樣的事情: 創建: PARAMS:

a=c    //a = action 
d=a array of dataJson //d = a defined books data in Json format 
u=user id 
s=session key 

,我將返回:

0/!0  //0 = success case, !0 will give the error code 

陣列的id //新創建項目 陣列ID

閱讀: PARAMS:

a=r    //a = action 
id=the books id  (optional) //read the books from book id 
title= a books title (optional) //read the books from title 
author= an author (optional) //read the books from author 
u=user id 
s=session key 

//如果沒有可選參數,可以返回的所有書籍。

,我將返回:

​​

更新: PARAMS:

a=u    //a = action 
id=the books id  //update the books from book id 
d=a dataJson //d = a defined books data in Json format 
u=user id 
s=session key 

,我將返回:

0/!0  //0 = success case, !0 will give the error code 

刪除: PARAMS:

a=d    //a = action 
id=the books id  //delete the books from book id 
u=user id 
s=session key 

,我將返回:

0/!0  //0 = success case, !0 will give the error code 

這是正確的我當前的設計移動到 「休息」 的方式?謝謝。

+0

你有你的控制之下的界面?只支持POST是一個安靜的api的一個很大的限制。你會放棄重要的「統一接口」原則。如果你有api在你的控制之下,我會投入努力,所以你也支持其他HTTP方法(PUT,DELETE等) –

回答

1

我認爲你應該使用標準的Http狀態代碼而不是你的錯誤代碼。 你應該分層順序使用每一個有價值的參數中的URL是這樣的:

創建應該是:

POST : http://www.mydomain.com/user/<userId>/books/create 
Http request body = your json data 

Answer should be : 201 -> Created or 409 -> Conflict if there is one defined with the same title 

如果您使用的sessionId作爲一個URL參數,你應該在URL中使用它太。 您可以使用Http響應主體將bookIds傳遞迴json數組中。

閱讀應該是:

GET http://www.mydomain.com/user/<userId>/books/<bookId|@all>/<title|@all>/<author|@all> 

更新:

POST http://www.mydomain.com/user/<userId>/books/<bookId> 
Http request body = your json data. (updatable fields only) 

Answer : use HttpStatusCodes as response statuses and data as bookId 

刪除:

POST http://www.mydomain.com/user/<userId>/books/<bookId>/delete 

Answer : use HttpStatusCodes 
+0

umum,我有要問的東西.....通常我的books.php是在我的/ htdocs /,這樣我可以執行我的請求,如果我改變爲這種方式,我的/ htdocs /路徑中會有什麼內容?如何讓PHP程序可以讀取像... http://www.mydomain.com/user/1234/books/?我需要在我的/ htdocs中創建一個單獨的文件夾「user」嗎?我是否需要在分配新用戶時在我的用戶文件夾中添加一個新ID,例如「1234」? – Tattat

+1

這有問題在URL中編碼動詞並重載POST。我建議在這些情況下使用PUT和DELETE。 – laz

+0

我無法回答這個問題的PHP實現。 – kisp