真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php移動(dòng)端接口數(shù)據(jù)規(guī)范 php定義接口

微信小程序,后端用php寫(xiě)完接口,怎么把數(shù)據(jù)給前端,要帶什么參數(shù)

1、首先在 index.js中想寫(xiě)邏輯代碼。

在上城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,營(yíng)銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,上城網(wǎng)站建設(shè)費(fèi)用合理。

2、其中page里面的data里面是前臺(tái)展示時(shí)的一些數(shù)據(jù),而onload里面是調(diào)用的接口。

3、調(diào)用的方式為get調(diào)用,返回的數(shù)據(jù)存在res里面。

4、返回的數(shù)據(jù),而data中就是需要的數(shù)據(jù)。

5、data:一個(gè)入?yún)ethod:請(qǐng)求方式,如果是POST請(qǐng)求必須按上面寫(xiě),默認(rèn)是get請(qǐng)求,不用處理。complete:頁(yè)面請(qǐng)求完成后的方法,通過(guò)that.setData將數(shù)據(jù)傳遞給WXML頁(yè)面。success:頁(yè)面加載成功后的執(zhí)行方法。

php開(kāi)發(fā)app接口和api有什么不同

1、API 比開(kāi)發(fā) WEB 更簡(jiǎn)潔,但可能邏輯更復(fù)雜,API 只返回結(jié)果,也就是只完成數(shù)據(jù)輸出,不呈現(xiàn)頁(yè)面,

2、WEB 開(kāi)發(fā),更多的是 GET 和 POST 請(qǐng)求,API 還有 PUT、DELETE 請(qǐng)求

3、和 WEB 開(kāi)發(fā)一樣,首先需要一些相關(guān)的參數(shù),這些參數(shù),都會(huì)由客戶端傳過(guò)來(lái),也許是 GET 也許是 POST,這個(gè)需要開(kāi)發(fā)團(tuán)隊(duì)相互之間約定好,或者制定統(tǒng)一規(guī)范

4、有了參數(shù),根據(jù)應(yīng)用需求,完成數(shù)據(jù)處理,例如:獲取用戶信息、發(fā)朋友圈、發(fā)消息、一局游戲結(jié)束數(shù)據(jù)提交等等

5、數(shù)據(jù)邏輯處理完之后,返回客戶端所需要用到的相關(guān)數(shù)據(jù),例如:用戶信息數(shù)組、朋友圈列表、消息狀態(tài)、游戲結(jié)果數(shù)據(jù)等等,那數(shù)據(jù)是怎么返給客戶端呢?常見(jiàn)有XML、JSON,設(shè)置相應(yīng)的header并把要返回的數(shù)據(jù)直接打印出來(lái)即可

6、客戶端獲取到你返回的數(shù)據(jù)后,在客戶端本地和用戶進(jìn)行交互!

PHP---APP接口02

JSONXML

XML: 是一種標(biāo)記語(yǔ)言,設(shè)計(jì)的宗旨是傳輸數(shù)據(jù)

JSON: 輕量級(jí)的數(shù)據(jù)交換格式

APP接口主要是用JSON輸出格式

APP接口輸出格式三要素:

1. code::錯(cuò)誤碼

2. msg:錯(cuò)誤碼對(duì)應(yīng)的描述

3. data:接口返回的數(shù)據(jù)

誰(shuí)有權(quán)限調(diào)用APP接口,客戶端需要帶著憑證來(lái)調(diào)用APP接口

JWT的原理:

服務(wù)端認(rèn)證之后,生成一個(gè)JSON對(duì)象,返回給用戶。后續(xù)客戶端所有請(qǐng)求都會(huì)帶上這個(gè)JSON對(duì)象。服務(wù)端依靠這個(gè)JSON對(duì)象來(lái)認(rèn)定用戶身份。

組成: Header, Payload, Signature

1. Header

說(shuō)一下我是什么

header通常包含了兩部分:類型和加密算法

{

"alg": "HS256",

"typ": "JWT"

}

header需要經(jīng)過(guò)Base64Url編碼后作為IWT的第一部分。

2. Payload

payload包含了claim, 三種類型reserved, public, private

reserved這些claim是JWT預(yù)先定義的,不強(qiáng)制使用,常用的有:

1). iss: 簽發(fā)者

2). exp: 過(guò)期的時(shí)間戳

3). sub: 面向的用戶

4). aud: 接收方

5). iat: 簽發(fā)時(shí)間

{

"sub":? "1234567890",

"name":? "John Doe",

"admin": true

}

payload需要經(jīng)過(guò)Base64Url編碼后作為JWT的第二部分。

3. Signature

創(chuàng)建簽名使用編碼后的header和payload以及一個(gè)密匙,使用header中指定的簽名算法進(jìn)行簽名

HMACSHA256(

base64UrlEncode(header) + "." +

base64UrlEncode(payload),

secret

)

簽名是在服務(wù)端進(jìn)行的,客戶端并不知道,所以是安全的。

php里面app接口怎么寫(xiě)出來(lái)

1、目的:清楚明白所寫(xiě)接口的用途

2、安全性:做好接口的安全性,防止接口數(shù)據(jù)泄露,做好必要的參數(shù)加密措施

3、按需分配: 接受值和返回值要實(shí)用,不接受和返回不需要的數(shù)據(jù),返回值返回什么應(yīng)與使用者時(shí)時(shí)溝通

4、規(guī)范性:參數(shù)命名規(guī)范有意義,讓使用者一目了然;返回值要包含調(diào)用接口狀態(tài)信息,返回?cái)?shù)據(jù)格式最好使用JSON

5、日志:寫(xiě)接口調(diào)用日志,方便查到接口調(diào)用錯(cuò)誤,實(shí)現(xiàn)監(jiān)控和對(duì)接快捷

用PHP寫(xiě)手機(jī)端APP數(shù)據(jù)接口和PC端數(shù)據(jù)接口有什么不一樣?

都一樣的 只是由于app不是瀏覽器不能正常使用cookie所以不支持session認(rèn)證 在做app接口的時(shí)候一般都會(huì)使用自己定義的token來(lái)認(rèn)證 其他的都是一致的

如何利用Thinkphp框架開(kāi)發(fā)移動(dòng)端接口詳解

方案一:給原生APP提供api接口

使用TP框架時(shí) 放在common文件夾下文件名就叫function.php

?php

/**

*?Created?by?zhangkx

*?Email:?zkx520tnhb@163.com

*?Date:?2015/8/1

*?Time:?23:15

*/

/******?api開(kāi)發(fā)輔助函數(shù)?*******/

/**

*?@param?null?$msg?返回正確的提示信息

*?@param?flag?success?CURD?操作成功

*?@param?array?$data?具體返回信息

*?Function?descript:?返回帶參數(shù),標(biāo)志信息,提示信息的json?數(shù)組

*

*/

function?returnApiSuccess($msg?=?null,$data?=?array()){

$result?=?array(

'flag'?=?'Success',

'msg'?=?$msg,

'data'?=$data

);

print?json_encode($result);

}

/**

*?@param?null?$msg?返回具體錯(cuò)誤的提示信息

*?@param?flag?success?CURD?操作失敗

*?Function?descript:返回標(biāo)志信息?‘Error',和提示信息的json?數(shù)組

*/

function?returnApiError($msg?=?null){

$result?=?array(

'flag'?=?'Error',

'msg'?=?$msg,

);

print?json_encode($result);

}

/**

*?@param?null?$msg?返回具體錯(cuò)誤的提示信息

*?@param?flag?success?CURD?操作失敗

*?Function?descript:返回標(biāo)志信息?‘Error',和提示信息,當(dāng)前系統(tǒng)繁忙,請(qǐng)稍后重試;

*/

function?returnApiErrorExample(){

$result?=?array(

'flag'?=?'Error',

'msg'?=?'當(dāng)前系統(tǒng)繁忙,請(qǐng)稍后重試!',

);

print?json_encode($result);

}

/**

*?@param?null?$data

*?@return?array|mixed|null

*?Function?descript:?過(guò)濾post提交的參數(shù);

*

*/

function?checkDataPost($data?=?null){

if(!empty($data)){

$data?=?explode(',',$data);

foreach($data?as?$k=$v){

if((!isset($_POST[$k]))||(empty($_POST[$k]))){

if($_POST[$k]!==0??$_POST[$k]!=='0'){

returnApiError($k.'值為空!');

}

}

}

unset($data);

$data?=?I('post.');

unset($data['_URL_'],$data['token']);

return?$data;

}

}

/**

*?@param?null?$data

*?@return?array|mixed|null

*?Function?descript:?過(guò)濾get提交的參數(shù);

*

*/

function?checkDataGet($data?=?null){

if(!empty($data)){

$data?=?explode(',',$data);

foreach($data?as?$k=$v){

if((!isset($_GET[$k]))||(empty($_GET[$k]))){

if($_GET[$k]!==0??$_GET[$k]!=='0'){

returnApiError($k.'值為空!');

}

}

}

unset($data);

$data?=?I('get.');

unset($data['_URL_'],$data['token']);

return?$data;

}

}

查詢單個(gè)果品詳細(xì)信息

/**

*?發(fā)布模塊

*

*?獲取信息單個(gè)果品詳細(xì)信息

*

*/

public?function?getMyReleaseInfo(){

//檢查是否通過(guò)post方法得到數(shù)據(jù)

checkdataPost('id');

$where['id']?=?$_POST['id'];

$field[]?=?'id,fruit_name,high_price,low_price,address,size,weight,fruit_pic,remark';

$releaseInfo?=?$this-release_obj-findRelease($where,$field);

$releaseInfo['remark']?=?mb_substr($releaseInfo['remark'],0,49,'utf-8').'...';

//多張圖地址按逗號(hào)截取字符串,截取后如果存在空數(shù)組則需要過(guò)濾掉

$releaseInfo['fruit_pic']?=?array_filter(explode(',',?$releaseInfo['fruit_pic']));

$fruit_pic?=?$releaseInfo['fruit_pic'];unset($releaseInfo['fruit_pic']);

//為圖片添加存儲(chǔ)路徑

foreach($fruit_pic?as?$k=$v?){

$releaseInfo['fruit_pic'][]?=?'http://'.$_SERVER['HTTP_HOST'].'/Uploads/Release/'.$v;

}

if($releaseInfo){

returnApiSuccess('',$releaseInfo);

}else{

returnApiError(?'什么也沒(méi)查到(+_+)!');

}

}

findRelease()?方法的model

/**

*?查詢一條數(shù)據(jù)

*/

public?function?findRelease($where,$field){

if($where['status']?==?''?||?empty($where['status'])){

$where['status']?=?array('neq','9');

}

$result?=?$this-where($where)-field($field)-find();

return?$result;

}

app端接收到的數(shù)據(jù)(解碼json之后)

{

"flag":?"success",

"message":?"",

"responseList":?{

"id":?"2",

"fruit_name":?"蘋(píng)果",

"high_price":?"8.0",

"low_price":?"5.0",

"address":?"天津小白樓水果市場(chǎng)",

"size":?"2.0",

"weight":?"2.0",

"remark":?"急需...",

"fruit_pic":?[

"",

""

]

}

}

app端接收到的數(shù)據(jù)(原生json串)

代碼如下:

{"flag":"success","message":"","responseList":{"id":"2","fruit_name":"\u82f9\u679c","high_price":"8.0","low_price":"5.0","address":"\u5929\u6d25\u5c0f\u767d\u697c\u6c34\u679c\u5e02\u573a","size":"2.0","weight":"2.0","remark":"\u6025\u9700...","fruit_pic":["http:\/\/fruit.txunda.com\/Uploads\/Release\/201508\/55599e7514815.png","http:\/\/fruit.txunda.com\/Uploads\/Release\/201508\/554f2dc45b526.jpg"]}}

方案二:另外我們還可以通過(guò)ThinkPHP實(shí)現(xiàn)移動(dòng)端訪問(wèn)自動(dòng)切換主題模板,這樣也可以做到移動(dòng)端訪問(wèn)

ThinkPHP的模板主題機(jī)制,如果只是在PC,只要需修改 DEFAULT_THEME (新版模板主題默認(rèn)是空,表示不啟用模板主題功能)配置項(xiàng)就可以方便的實(shí)現(xiàn)多模板主題切換。

但對(duì)于移動(dòng)端與PC端,也許你會(huì)設(shè)計(jì)完全不同的主題風(fēng)格,且針對(duì)不同的來(lái)路提供不同的渲染方式,其中一種比較流行的方法是“響應(yīng)式設(shè)計(jì)”,但就本人經(jīng)歷而言,要實(shí)現(xiàn)完全的“響應(yīng)式設(shè)計(jì)”并不是那么容易,且解決兼容問(wèn)題也是個(gè)難題,假設(shè)是大型站點(diǎn),比如:淘寶、百度、拍拍這些,響應(yīng)式設(shè)計(jì)肯定是滿足不了需求的,而是需要針對(duì)手機(jī)訪問(wèn)用戶提供單獨(dú)的手機(jī)網(wǎng)站。

ThinkPHP 完全能夠?qū)崿F(xiàn),而且非常的簡(jiǎn)單。與TPM的智能模版切換引擎相同,只要對(duì)來(lái)路進(jìn)行判斷處理就行了。

一、將 ismobile() 加入到{項(xiàng)目/Common/common.php}

function?ismobile()?{

//?如果有HTTP_X_WAP_PROFILE則一定是移動(dòng)設(shè)備

if?(isset?($_SERVER['HTTP_X_WAP_PROFILE']))

return?true;

//此條摘自TPM智能切換模板引擎,適合TPM開(kāi)發(fā)

if(isset?($_SERVER['HTTP_CLIENT'])?'PhoneClient'==$_SERVER['HTTP_CLIENT'])

return?true;

//如果via信息含有wap則一定是移動(dòng)設(shè)備,部分服務(wù)商會(huì)屏蔽該信息

if?(isset?($_SERVER['HTTP_VIA']))

//找不到為flase,否則為true

return?stristr($_SERVER['HTTP_VIA'],?'wap')???true?:?false;

//判斷手機(jī)發(fā)送的客戶端標(biāo)志,兼容性有待提高

if?(isset?($_SERVER['HTTP_USER_AGENT']))?{

$clientkeywords?=?array(

'nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile'

);

//從HTTP_USER_AGENT中查找手機(jī)瀏覽器的關(guān)鍵字

if?(preg_match("/("?.?implode('|',?$clientkeywords)?.?")/i",?strtolower($_SERVER['HTTP_USER_AGENT'])))?{

return?true;

}

}

//協(xié)議法,因?yàn)橛锌赡懿粶?zhǔn)確,放到最后判斷

if?(isset?($_SERVER['HTTP_ACCEPT']))?{

//?如果只支持wml并且不支持html那一定是移動(dòng)設(shè)備

//?如果支持wml和html但是wml在html之前則是移動(dòng)設(shè)備

if?((strpos($_SERVER['HTTP_ACCEPT'],?'vnd.wap.wml')?!==?false)??(strpos($_SERVER['HTTP_ACCEPT'],?'text/html')?===?false?||?(strpos($_SERVER['HTTP_ACCEPT'],?'vnd.wap.wml')??strpos($_SERVER['HTTP_ACCEPT'],?'text/html'))))?{

return?true;

}

}

return?false;

}

二、在{項(xiàng)目/Lib/}創(chuàng)建一個(gè) CommonAction.php,假設(shè)你的項(xiàng)目已公共控制器,則無(wú)需創(chuàng)建,直接加在里面就行了。

Class?CommonAction?extends?Action{

Public?function?_initialize(){

//移動(dòng)設(shè)備瀏覽,則切換模板

if?(ismobile())?{

//設(shè)置默認(rèn)默認(rèn)主題為?Mobile

C('DEFAULT_THEME','Mobile');

}

//............你的更多代碼.......

}

}


分享文章:php移動(dòng)端接口數(shù)據(jù)規(guī)范 php定義接口
鏈接分享:http://weahome.cn/article/hhhdie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部