在開發(fā)APP、小程序等應用過程中,經(jīng)常需要以API接口形式請求網(wǎng)站數(shù)據(jù),以下為JSON數(shù)據(jù)輸出的一個開發(fā)示例。
建立api/json/demo.php,代碼如下:
<?php require '../../common.inc.php'; $lists = array(); $result = $db->query("SELECT itemid,title FROM {$DT_PRE}webpage ORDER BY listorder"); while($r = $db->fetch_array($result)) { $lists[] = $r; } echo json_encode($lists); ?>
基本流程是先引入系統(tǒng)框架,然后將數(shù)據(jù)庫里的數(shù)據(jù)查詢出來,保存到數(shù)組,通過json_encode函數(shù)將數(shù)組轉(zhuǎn)換為JSON格式數(shù)據(jù)輸出。
實際開發(fā)過程可以根據(jù)實際需要,傳遞不同的參數(shù),改變SQL語句來實現(xiàn)不同數(shù)據(jù)的輸出。
通過瀏覽器訪問 網(wǎng)站地址/api/json/demo.php 調(diào)試無誤之后,在應用中請求此地址即可獲取相應的數(shù)據(jù)。
自V8.0版本,api/json/demo.php已經(jīng)默認創(chuàng)建,可以參考此文件創(chuàng)建更多不同的文件對應不同的功能需求。
為了訪問入口的統(tǒng)一,V8.0同時提供了api/json.php文件,可以通過傳遞文件名參數(shù) api/json.php?file=demo 來訪問 api/json/demo.inc.php
api/json.php代碼如下:
<?php require '../common.inc.php'; require DT_ROOT.'/include/post.func.php'; (isset($file) && check_name($file)) or $file = 'demo'; @include DT_ROOT.'/api/json/'.$file.'.inc.php'; ?>
api/json/demo.inc.php代碼如下:
<?php defined('IN_DESTOON') or exit('Access Denied'); $lists = array(); $result = $db->query("SELECT itemid,title FROM {$DT_PRE}webpage ORDER BY listorder"); while($r = $db->fetch_array($result)) { $lists[] = $r; } echo json_encode($lists); ?>
例如需要調(diào)用新聞數(shù)據(jù),可以使用如下兩種方法實現(xiàn):
一、創(chuàng)建 api/json/news.php ,參考 api/json/demo.php 編寫邏輯,通過 網(wǎng)站地址/api/json/news.php 訪問
二、創(chuàng)建 api/json/news.inc.php ,參考 api/json/demo.inc.php 編寫邏輯,通過 網(wǎng)站地址/api/json.php?file=news 訪問
建議使用第二種方式進行開發(fā),如果需要對訪問進行認證,數(shù)據(jù)進行加密等可以直接在api/json.php中統(tǒng)一處理。