首頁  >  問答  >  主體

php - 關於restful的一點疑問

關於restful,tp3.2手冊裡的描述感覺挺直白明了的,如下

作用                    传统模式                    REST模式 
列举出所有的用户         GET /users/list            GET /users 
列出ID为1的用户信息      GET /users/show/id/1       GET /users/1 
插入一个新的用户         POST /users/add            POST /users 
更新ID为1的用户信息      POST /users/mdy/id/1       PUT /users/1 
删除ID为1的用户         POST /users/delete/id/1     DELETE /users/1 

get方法好理解,就是判斷參數進行不同的操作,比如上面的是要所有用戶還是單個用戶信息,通過是否有id來判斷,這點沒問題,但是我現在的疑問是,其他的比如更新操作的呢,如果我有兩個接口,一個是修改用戶個人信息,一個是僅修改用戶手機,兩個都是修改用戶信息,修改個人信息可以用PUT /users/1 ,但是修改用戶手機呢,我是要多傳入一個參數例如PUT /users/1/2來根據參數來進行不同的修改操作?還是再另外新建一個控制器例如PUT /usersPhone/1這樣?如果是後者的話也太麻煩了吧?

为情所困为情所困2736 天前456

全部回覆(4)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:05:34

    說實話。這根本就不是restful設計原則,path裡首先就不能有動詞……
    put可以帶body的,所以在body裡就行。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:05:34

    POST的body是可以帶參數的。

    例如你帶上

    {
        phone:"123456789"
    }

    這種參數,後台就可以知道是要修改手機號碼。

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-16 13:05:34

    修改個人資訊都可以透過PUT /users/1 來進行,1對應是user的id,對應一條記錄的修改,用戶手機是用戶資訊其中的字段吧,PUT /users/1 你所需要修改的用戶信息還是需要透過json方式進行傳遞過去修改的呀

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:05:34

    RESTful模式:
    http(s)://server.com/app-name/{version}/{domain}/{rest-convention}
    這裡,{version}代表api的版本資訊。 {domain}是一個你可以用來定義任何技術的區域(例如:安全-允許指定的使用者可以存取這個區域。)或是業務上的原因。 (例如:同樣的功能在同一個前綴之下。)
    {rest-convention} 代表這個域(domain)下,約定的rest介面集合。

    REST介面規格:
    http://www.coderli.com/transl...

    回覆
    0
  • 取消回覆