Destoon · 2021年10月2号 0

Destoon:网站数据转换为JSON格式输出

在开发APP、小程序等应用过程中,经常需要以API接口形式请求网站数据,以下为JSON数据输出的一个开发示例。

建立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);
?>

基本流程是先引入系统框架,然后将数据库里的数据查询出来,保存到数组,通过json_encode函数将数组转换为JSON格式数据输出。

实际开发过程可以根据实际需要,传递不同的参数,改变SQL语句来实现不同数据的输出。

通过浏览器访问 网站地址/api/json/demo.php 调试无误之后,在应用中请求此地址即可获取相应的数据。

自V8.0版本,api/json/demo.php已经默认创建,可以参考此文件创建更多不同的文件对应不同的功能需求。

为了访问入口的统一,V8.0同时提供了api/json.php文件,可以通过传递文件名参数 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);
?>

例如需要调用新闻数据,可以使用如下两种方法实现:

一、创建 api/json/news.php ,参考 api/json/demo.php 编写逻辑,通过 网站地址/api/json/news.php 访问

二、创建 api/json/news.inc.php ,参考 api/json/demo.inc.php 编写逻辑,通过 网站地址/api/json.php?file=news 访问

建议使用第二种方式进行开发,如果需要对访问进行认证,数据进行加密等可以直接在api/json.php中统一处理。