作為一個新手程序員,剛上班不久就被BOSS,拖去開發restful api 與APP交互。拿到手一臉蒙圈,然后看了某度的別人所設計的,感覺就是重復很多,設計很多。然后翻牆出去看了好久,終於把這個K完了。然后寫下這個博文,讓自己總結一下和記錄。
首先我們要做的是PHP db封裝,這個要包含最基本的CRUD。可以把常量就是配置數據庫的寫在頭部,或是寫在另外一個頁面,導入這個cofin。
然后我要介紹restful api 的設計有很多種,
我們使用這種方法:
get:select POST:inseit into put:update delete:delete
每一個method對應不同的方法,這樣方便而且容易區分。
例如一個用戶表:
GET:/app/ 列出所有用戶
GET: /app/1 列出ID為1的用戶
POST:/app/ 增加用戶
PUT:/app/id 修改指定ID為1的用戶(put有個特性,他只會修改一次,不管你怎么刷新頁面)
delete:/app/id 刪除指定ID
[這里要使用一個工具 chorm的postman,這個工具可以模擬從APP發送不同的method方法,發送的格式因為都是JSON,也可以在上面修改,這個是別的軟件,不會操作自己百度一下,對了,下載下來如果發現裝不上去,可以把里面那個文件的后綴名,改成.rar.然后在解壓到當前的文件夾,把_metadata前面的_去掉,然后在用谷歌就可以使用了]
而我不使用put和delect ,不是嫌麻煩,是那兩個沒怎么用過,有點抗拒。我是這么寫的
都用POST或是分開get和Post,只要傳入的json中有”第一個“[way]=add或select,把方法傳進來,用swtich這個方法判斷。
1.POST方法接收不到頭部不是header(”content-type:application/json“),為什么要設置這個頭部,別問我,我也不知道。這樣我不能用$_post[‘’]這個方法接收了,$_get['']可以使用,我們可以用這個,json_decode(file_get_contents("php://input"),true);自己查一下手冊,就明白這是什么了。
2.我們怎么知道對方提交的是什么的method,可以用這個。$_SERVER['REQUEST_METHOD']
3.為什么要刪除way。呵呵你傳進來的這個解析后的數組,你不要里面的參數了嗎?難道 你的數據庫里也有[way]='add';這個方法,那就當我沒說,我們可以用這個函數unset();把這個[way]這個K掉
當我們執行了一遍這個DB流程回來,我們要發送json數據回去和HTTP code回去。
查詢是要返回的,其他的返回一個標示就差不多了 。
發送回去的json:
{code:200,data:''}自己把要返回的數據拼進去,不返回數據的{code:200,msg:...};這個都可以自定義返回的,當然要寫成一個文檔
發送回去的httpd code:
網上要非常多介紹code的狀態碼,我想說城里的人真會玩,我不懂這個是狀態碼嗎?我只是想怎么發回去罷了,看到最后都沒發現。我也是服了。
http_response_code(200);
不懂有沒有同學也會跟我一樣,說這個函數沒定義,這個時候你要自己定義一個函數了
不發個圖感覺都不算是博客。
添加方法里面,我不是什么都聽別人丟什么,我們就要什么的。
我們要把自己的字段表封裝,就是把這個想要的 $data['oid'] = 給對方的字段,json解封下來所對應的字段,我們把自己想要的取下來,然后才放進去。這個是有必要的,當然我們也要問對面想要什么,我也發特定的回給他。
到這里restful api設計完畢了。沒有什么設計方面的知識。有什么的大神大家一起交流,畢竟‘新手上路’;
----j.m