你好!
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比瀍河網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式瀍河網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋瀍河地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。
把傳統(tǒng)的PHP Web接口改成符合RESTful風(fēng)格的Web接口有什么用處?
其實(shí),這里最好用“好處”這個(gè)詞來(lái)代替“用處”,因?yàn)閭鹘y(tǒng)的Web接口實(shí)現(xiàn)方式同樣能夠?qū)崿F(xiàn)業(yè)務(wù)需要(所以這不是一個(gè)必須的事情,需要自己根據(jù)業(yè)務(wù)需求綜合判斷是否需要采用),而改用“RESTful風(fēng)格”會(huì)有一些額外的“好處”:
統(tǒng)一的風(fēng)格能夠讓各方更加便利的進(jìn)行交互,也帶來(lái)了更好的兼容性(這是一個(gè)所有遵循一定規(guī)范所帶來(lái)的共通的好處,就像大家都說(shuō)普通話,交流起來(lái)多方便啊)
對(duì)資源的操作正好對(duì)應(yīng)相應(yīng)的HTTP動(dòng)作(GET、POST、PUT、DELETE),而這些動(dòng)作正好可以滿足我們對(duì)資源狀態(tài)進(jìn)行操作的需要,也就是說(shuō)想對(duì)資源狀態(tài)進(jìn)行什么樣的操作就選擇什么樣的動(dòng)作,而這些動(dòng)作又是HTTP協(xié)議本身提供的,多么和諧自然?。ň褪穷}主的摘錄內(nèi)容)
請(qǐng)求所造成的影響明確,或者說(shuō)副作用明確,比如GET肯定是安全的,PUT和DELETE肯定是冪等得,POST肯定是不安全的(這里的肯定是建立在API設(shè)計(jì)完全遵循“RESTful風(fēng)格”基礎(chǔ)上的)
良好的符合“RESTful風(fēng)格”的URI設(shè)計(jì),可以讓W(xué)eb接口的功能和整體結(jié)構(gòu)更加清晰,僅僅通過(guò)URI就能方便的推測(cè)出來(lái)接口是做什么的,以及多個(gè)資源之間關(guān)聯(lián)性
利用HTTP內(nèi)容協(xié)商(content negotiation)實(shí)現(xiàn)資源的多重表述,比如請(qǐng)求方可以把自己需要的格式放到頭信息的Accept字段中表述(如Accept: text/json),這樣同樣一個(gè)URI就可以輸出多種格式而不再需要在URI里面特別加上一個(gè)type=json的參數(shù)了
客戶端、代理服務(wù)器等可以根據(jù)HTTP協(xié)議規(guī)范進(jìn)行相應(yīng)的額外處理,比如Cache
希望能夠幫到你!
使用PHP寫api接口是經(jīng)常做的,PHP寫好接口后,前臺(tái)就可以通過(guò)鏈接獲取接口提供的數(shù)據(jù),而返回的數(shù)據(jù)一般分為兩種情況,xml和json,在這個(gè)過(guò)程中,服務(wù)器并不知道,請(qǐng)求的來(lái)源是什么,有可能是別人非法調(diào)用我們的接口,獲取數(shù)據(jù),因此就要使用安全驗(yàn)證
原理
從圖中可以看得很清楚,前臺(tái)想要調(diào)用接口,需要使用幾個(gè)參數(shù)生成簽名。
時(shí)間戳:當(dāng)前時(shí)間
隨機(jī)數(shù):隨機(jī)生成的隨機(jī)數(shù)
口令:前后臺(tái)開(kāi)發(fā)時(shí),一個(gè)雙方都知道的標(biāo)識(shí),相當(dāng)于暗號(hào)
算法規(guī)則:商定好的運(yùn)算規(guī)則,上面三個(gè)參數(shù)可以利用算法規(guī)則生成一個(gè)簽名。前臺(tái)生成一個(gè)簽名,當(dāng)需要訪問(wèn)接口的時(shí)候,把時(shí)間戳,隨機(jī)數(shù),簽名通過(guò)URL傳遞到后臺(tái)。后臺(tái)拿到時(shí)間戳,隨機(jī)數(shù)后,通過(guò)一樣的算法規(guī)則計(jì)算出簽名,然后和傳遞過(guò)來(lái)的簽名進(jìn)行對(duì)比,一樣的話,返回?cái)?shù)據(jù)。
算法規(guī)則
在前后臺(tái)交互中,算法規(guī)則是非常重要的,前后臺(tái)都要通過(guò)算法規(guī)則計(jì)算出簽名,至于規(guī)則怎么制定,看你怎么高興怎么來(lái)。
我這個(gè)算法規(guī)則是
時(shí)間戳,隨機(jī)數(shù),口令按照首字母大小寫順序排序
然后拼接成字符串
進(jìn)行sha1加密
再進(jìn)行MD5加密
轉(zhuǎn)換成大寫。
1.制定規(guī)范
開(kāi)發(fā)前一定要定好一個(gè)規(guī)范,比如要定好數(shù)據(jù)返回的通用參數(shù)和格式。關(guān)于數(shù)據(jù)格式,用的比較多的有xml和json,我建議用json,因?yàn)閖son比xml的好處更多。
2.精簡(jiǎn)的返回?cái)?shù)據(jù)
接口數(shù)據(jù)因符合需要什么返回什么的原則,比如要查詢某個(gè)用戶的余額和注冊(cè)時(shí)間,網(wǎng)頁(yè)里面的做法可能是select * from user where uid=1,但是接口一定要select balance,regtime from user where uid=1。因?yàn)榻涌诜祷財(cái)?shù)據(jù)是要有開(kāi)銷的,要流量的,能少返回?cái)?shù)據(jù)就盡量少返回,這樣可以大大的提高性能。
3.數(shù)據(jù)類型要嚴(yán)格
要注意數(shù)據(jù)的類型,整數(shù)類型的數(shù)據(jù)一定要轉(zhuǎn)為int,因?yàn)閍pp客戶端開(kāi)發(fā)的java、object-c語(yǔ)言對(duì)數(shù)據(jù)類型比較嚴(yán)格,類型不對(duì)會(huì)照成app閃退。
4.要寫接口文檔
一定要寫好接口文檔,并按照模塊寫,而且還要書(shū)寫規(guī)范,最好的格式是:
接口請(qǐng)求地址;請(qǐng)求參數(shù)(包括參數(shù)名、類型、是否必填);測(cè)試參數(shù)舉例;返回參數(shù)(參數(shù)名,并注明每個(gè)參數(shù)的含義)。
這樣哪怕以后項(xiàng)目很大,以不會(huì)照成維護(hù)困難的問(wèn)題。
5.保證代碼正確性
要驗(yàn)證保證代碼正確無(wú)誤,而且生成環(huán)境中要屏蔽掉錯(cuò)誤,避免頭部有額外的輸出,照成返回的json等數(shù)據(jù)解析失敗而導(dǎo)致app閃退等。
6.要優(yōu)化代碼的性能
app要求響應(yīng)迅速,這樣才能給用戶比較好的體驗(yàn)感。所以移動(dòng)接口端在處理業(yè)務(wù)邏輯的時(shí)候,要避免不要執(zhí)行太復(fù)雜的sql語(yǔ)句,或者含有大量的循環(huán),能做成緩存的盡量做緩存,比如將首頁(yè)的熱點(diǎn)模塊信息可以存到redis緩存中。在不考慮網(wǎng)速的情況下,比較理想的接口響應(yīng)時(shí)間應(yīng)該是200毫秒以內(nèi)。
7.不要隨意更改舊接口
app不像網(wǎng)頁(yè),app一旦發(fā)布,有人使用之后,接口就不要亂修改了。以后升級(jí)也是,修改要在保證接口原有結(jié)構(gòu)之上進(jìn)行額外的擴(kuò)展,否則會(huì)導(dǎo)致調(diào)用舊版接口的app出現(xiàn)bug。
8. 注意接口的安全
安全高于一切,必須要保證接口的安全。電話號(hào)碼等敏感信息在傳輸?shù)倪^(guò)程中一定要加密,否則可能會(huì)被別人抓包到。拿取用戶信息的接口一定要驗(yàn)證權(quán)限,以防止接口被惡意調(diào)用,泄密用戶信息,甚至篡改信息。
接口的流程.
建立控制器(訪問(wèn)地址)-審核訪問(wèn)者身份(token)-驗(yàn)證提交數(shù)據(jù)是否符合類型(validate
)-處理接收數(shù)據(jù)(邏輯流程)-返回結(jié)果(json字符串).
其中要注意是否存在跨域,如果跨域要做跨域處理,例如返回jsonp.
分享名稱:php有結(jié)構(gòu)的數(shù)據(jù)接口,php數(shù)據(jù)結(jié)構(gòu)
鏈接URL:http://jinyejixie.com/article46/hseehg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、軟件開(kāi)發(fā)、外貿(mào)建站、做網(wǎng)站、企業(yè)網(wǎng)站制作、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)