摘要:在實際開發(fā)中格式的數(shù)據(jù)被廣泛用于客戶端和服務端數(shù)據(jù)的交互,幾乎每種語言都支持數(shù)據(jù)的解析,在中使用和便可,非常便捷。
php作為服務端的開發(fā)語言在app開發(fā)中扮演著連接客戶端和數(shù)據(jù)庫的角色,客戶端通過調(diào)用由php開發(fā)的接口完成對數(shù)據(jù)庫的操作,php代碼中實現(xiàn)用戶業(yè)務邏輯的部分。客戶端需要傳遞一些參數(shù)給服務端php,這些參數(shù)的格式由客戶端開發(fā)人員和服務端開發(fā)人員共同協(xié)商制定,兩者遵循同一套標準,使得雙方之間傳遞的數(shù)據(jù)能夠被正確解析。在實際開發(fā)中json格式的數(shù)據(jù)被廣泛用于客戶端和服務端數(shù)據(jù)的交互,幾乎每種語言都支持json數(shù)據(jù)的解析,在php中使用json_encode()和json_decode()便可,非常便捷。
在php為app開發(fā)接口中需要注意以下幾點:
1、數(shù)據(jù)傳輸建議使用json,json具有很強的跨平臺性,大多編程語言都支持json解析,json正在逐步取代xml,成為網(wǎng)絡數(shù)據(jù)的通用格式。
2、為了保證接口安全,一定要加入鑒權(quán)體系,確保請求php接口的是合法來源。另外對于傳輸?shù)臄?shù)據(jù)也可以使用加密技術,本書第20章有講述關于api接口簽名和信息加密的內(nèi)容。
3、對于線上的API,盡量使用error_reporting(0)關閉錯誤提示,或者把錯誤提示寫入到日志中,方便日后排查。這樣做的目的,一方面可以保護接口安全,防止輸出不該打印的錯誤信息,另一方面是保證輸出的是正確的數(shù)據(jù)格式,防止輸出錯誤信息被客戶端錯誤解析而出現(xiàn)的接口調(diào)用異常。
4、開發(fā) API 和 WEB 有一定的區(qū)別,如果接口返回的格式不規(guī)范,被客戶端拿到解析,可能會導致客戶端閃退崩潰等情況的出現(xiàn),所以在接口上線之前一定要充分的測試。
5、盡可能保證php寫出的代碼的性能,手機應用比web應用對響應速度的要求更高,因為用戶手機性能的巨大差異,手機應用在從服務端取到數(shù)據(jù)后要進行數(shù)據(jù)重組頁面渲染等會比web應用消耗更多的時間。
客戶端和服務端之間選定json作為數(shù)據(jù)傳輸格式,之后便要約定json中各字段的含義,一般在json數(shù)據(jù)中定義至少三個字段,分別為返回狀態(tài)碼,返回狀態(tài)描述和數(shù)據(jù)內(nèi)容。比如一個定義返回用戶信息的的json數(shù)據(jù)如下:
{“code":0,"msg":"success","data":{"name":"chenxiaolong","age":"22","gender":"male"}}
其中code值為0表示客戶端此次請求接口成功,msg字段說明此次請求的狀態(tài),與返回狀態(tài)碼code對應,data中是客戶端想要取到的具體內(nèi)容,里面包含服務端返回的用戶信息。在data字段開發(fā)者可根據(jù)不同的接口需要定義不同的字段格式。
此接口的簡單代碼示例如下:
function getUserInfo() { $uid = $_REQUEST[‘uid"]; $user = new User(); if($data = $user->findByUid($uid) != false) { $this->output($data); } else { $this->output("",1,"invalid uid"); } }
客戶端通過調(diào)用getUserInfo接口并傳入用戶的uid參數(shù),php接收該參數(shù)到mysql數(shù)據(jù)庫用戶表里根據(jù)此uid查詢用戶相關信息,其中User是一個封裝的用戶表模型,它提供根據(jù)用戶uid查詢用戶信息的findByUid方法,如果查詢到用戶信息就輸出用戶信息,否則返回錯誤信息給到客戶端,此處返回的錯誤狀態(tài)碼定義為1,表示不合法的uid,即在用戶表里沒有查詢到該uid對應的數(shù)據(jù)記錄。
接口用到了一個公用output方法,此方法是輸出json數(shù)據(jù)的具體實現(xiàn),示例代碼如下:
function output(,$data="",$code=0,$msg="success") { $out = array("code"=$code,"msg"=>$msg,"data"=>$data); echo json_encode($out); }
注意向客戶端返回數(shù)據(jù)時使用的是echo輸出而不是return。
本文節(jié)選自 《php7實踐指南》 陳小龍著
微信掃一掃,發(fā)現(xiàn)更多內(nèi)容
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22495.html
摘要:第二步添加在項目中創(chuàng)建文件。項目是官方的開源項目,負責實現(xiàn)對容器集群的快速編排。在這里我們會用到四個容器分別將放在四個不同的容器中,通過將四個應用容器關聯(lián)到一起組成項目。服務服務的容器將執(zhí)行我們項目中的代碼。 showImg(https://segmentfault.com/img/bVbpfM5?w=695&h=270);在這篇文章中我們將通過Docker在個人本地電腦上構(gòu)建一個快速...
摘要:官方地址是目前最流行的框架,發(fā)展勢頭迅猛,應用非常廣泛,有豐富的擴展包可以應付你能想到的各種應用場景,框架思想前衛(wèi),跟隨時代潮流,提倡優(yōu)雅代碼,自稱為工匠,其中的模板引擎容器以及擴展包為業(yè)務的開發(fā)提供了極大的便利。 laravel5.5+ laravel官方地址 laravel是目前最流行的php框架,發(fā)展勢頭迅猛,應用非常廣泛,有豐富的擴展包可以應付你能想到的各種應用場景,lara...
摘要:控制只是用來接收請求并請求邏輯處理類。事實上,業(yè)務邏輯無需感知網(wǎng)絡,網(wǎng)絡僅僅接入應用的傳輸機制,他不應超出應用中的路由和控制器的范疇。職責分離是編寫健壯應用的關鍵。其他通常,類庫應該以規(guī)范組織在我們的應用中。 聲明:本文并非博主原創(chuàng),而是來自對《Laravel 4 From Apprentice to Artisan》閱讀的翻譯和理解,當然也不是原汁原味的翻譯,能保證90%的原汁性,另...
摘要:原文使用和開發(fā)網(wǎng)站應用在領域目前看來新浪云走的比較早,也比較成熟。新浪云需要使用新浪微博的帳號才能登錄和使用。目前,新浪云需要進行實名認證才能創(chuàng)建個以上的應用,所以推薦進行實名認證。 原文:使用SAE和Gitcafe開發(fā)網(wǎng)站應用 在PaaS領域目前看來新浪云走的比較早,也比較成熟。相比IaaS,PaaS更能為企業(yè)或個人帶來成本上的節(jié)約。本文以php為例,記錄了如何在新浪云上注冊創(chuàng)建自...
摘要:的現(xiàn)狀目前是版本,是基于開發(fā)。入口文件啟動文件和配置文件框架的入口文件是。在路由中指定控制器類必須寫全命名空間,不然會提示找不到類。目前支持四種數(shù)據(jù)庫系統(tǒng)以及。使用時發(fā)生錯誤,因為在文件中,的默認驅(qū)動是。 最近使用 Lumen 做了 2 個業(yè)余項目,特此記錄和分享一下。 Lumen 的介紹 在使用一項新的技術時,了解其應用場景是首要的事情。 Lumen 的口號:為速度而生的 La...
閱讀 2809·2021-11-17 09:33
閱讀 4490·2021-09-22 15:57
閱讀 2883·2019-08-30 14:16
閱讀 3147·2019-08-29 14:07
閱讀 2428·2019-08-26 11:55
閱讀 3440·2019-08-23 17:07
閱讀 1738·2019-08-23 16:50
閱讀 2553·2019-08-23 16:08