別人請求你的API是數據流的,file_get_contents('php://input'); 這樣接收,然后在return 就行啊
創(chuàng)新互聯專注于盤州企業(yè)網站建設,響應式網站設計,商城網站定制開發(fā)。盤州網站建設公司,為盤州等地區(qū)提供建站服務。全流程定制網站設計,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯專業(yè)和態(tài)度為您提供的服務
使用PHP寫api接口是經常做的,PHP寫好接口后,前臺就可以通過鏈接獲取接口提供的數據,而返回的數據一般分為兩種情況,xml和json,在這個過程中,服務器并不知道,請求的來源是什么,有可能是別人非法調用我們的接口,獲取數據,因此就要使用安全驗證
原理
從圖中可以看得很清楚,前臺想要調用接口,需要使用幾個參數生成簽名。
時間戳:當前時間
隨機數:隨機生成的隨機數
口令:前后臺開發(fā)時,一個雙方都知道的標識,相當于暗號
算法規(guī)則:商定好的運算規(guī)則,上面三個參數可以利用算法規(guī)則生成一個簽名。前臺生成一個簽名,當需要訪問接口的時候,把時間戳,隨機數,簽名通過URL傳遞到后臺。后臺拿到時間戳,隨機數后,通過一樣的算法規(guī)則計算出簽名,然后和傳遞過來的簽名進行對比,一樣的話,返回數據。
算法規(guī)則
在前后臺交互中,算法規(guī)則是非常重要的,前后臺都要通過算法規(guī)則計算出簽名,至于規(guī)則怎么制定,看你怎么高興怎么來。
我這個算法規(guī)則是
時間戳,隨機數,口令按照首字母大小寫順序排序
然后拼接成字符串
進行sha1加密
再進行MD5加密
轉換成大寫。
返回的數據是php去決定的,xml和json都是可以的,
你可以和使用接口的一方定好規(guī)則,到底要xml格式數據還是json格式的數據。
當然你也可以更靈活點,當別人請求你的接口的時候,帶上參數。你在接口里面接受,如果參數是1,你就返回json,如果是2,你就返回xml這樣做顯得更靈活。這都是在乎你在接口中怎么去寫的。
這不難啊, 既然你也有例子了,就再細化一下,比如在結果輸出后加個表示結束的變量, 或者加個error數量的變量,為0則是沒發(fā)生錯誤. 你有什么不明白的?
======
以我做接口的經驗,程序主要有幾部分:
1.接收數據,驗證數據合法性
這你已經有例子了, 就是用get方法,程序直接接收get的query,而支付寶,銀行那些網關除了接收這些必要數據外,還會和商戶約定一個key,是這字符串, 約定好每次發(fā)送的數據通過某種方式,比如連接的方式和這個key組成一個大的字串,再以MD5加密,附上這個hash給接口,用來判斷這個請求的合法性,key是事先約定的,商戶和接口都知道
2.處理數據
這個沒什么好說的,數據入庫,計算等等
3.返回數據
如果是以http協(xié)議的話,就直接輸出header,然后輸出
值名=值+換行符
這樣的數據就可以了
銀行接口網關,財付通,支付寶,域名注冊接口我都做過,我只能提示到這里,具體要我做就不是200分的問題了,這需要時間調試
rerurn是語言中函數或者方法所代表的值,跟變量一樣,儲存在內存中。return是給其他代碼塊一個指針或者引用。
而服務器與app(客戶端)交互時,他們無法讀取同一個內存系統(tǒng),只能通過文本這樣的方式來交換信息。 php相對于APP來說,app 相對于一個打印機了 echo 就是把內容傳送給打印機打印出來了
所以要echo一段文本(json)給客戶端。