API接口开发:API接口

自定义数据接口

cms提供直接输出、PHP代码体两种方便开发者使用的数据输出接口。

image.png

1、直接输出

本类型是将后台录入的数据格式原样输出到客户端

image.png

返回格式为:

array(3) {
  ["code"]=>
  int(1)
  ["msg"]=>
  string(2) "ok"
  ["data"]=>
  string(7) "test123"
}


2、JSON数组

本类型数据内容必须是一个json格式的数组字符串

image.png

返回格式为:

array(3) {
  ["code"]=>
  int(1)
  ["msg"]=>
  string(2) "ok"
  ["data"]=>
  array(3) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
    [2]=>
    string(1) "3"
  }
}


3、php执行代码

https://www.xunruicms.com/doc/1132.html


4、模板查询标签

本类型需要有CMS模板标签的使用经验,直接写标签代码返回结果

image.png

例如调用news模块全部数据:

{module module=news}
或者
{list action=module module=news}

模板标签只能写一段,不能写多段

通过以上的list查询方法可调用循环标签的全部数据,当然你可以对结果进行格式化处理,使用回调方法。


5、自定义模板标签

本类型需要有CMS模板标签的使用经验,直接写标签代码返回结果,区别于(4),本类型可以直接在标签里面写赋值方法和格式化显示,不需要写回调方法

{xunruicms_img_title}

这里循环出news模块的全部数据,只显示id,title,再把thumb转换为url地址。

也可以这样写,原理是将输出变量赋值给$api数组:

{module module=news}
{php $api[$key]['id']=$t['id'];}
{php $api[$key]['title']=$t['title'];}
{php $api[$key]['thumb']=dr_thumb($t['thumb'], 200,200);}
{/module}


以上语法格式为:

{xunruicms_img_title}

6、自定义PHP代码

本类型需要有PHP的开发使用经验,直接将php业务代码写进去

$api变量为直接返回,例如:

$api = '我的自定义返回变量值';

image

返回截图如下:

image

也可以自定义强制返回

$api = '我的自定义返回变量值';
\Phpcmf\Service::C()->_json(1, '我的返回脚本成功了', $api); // 成功写法
\Phpcmf\Service::C()->_json(0, '我的返回脚本失败了'); // 失败写法


任意页面查询API接口

宸逸CMS框架支持读取任何页面的数据接口,接口格式如下:

/index.php?appid=[APPID]&appsecret=[appsecret]&[任意页面地址参数]

视频操作教程:

https://www.xunruicms.com/doc/video-dev-API%E6%8F%92%E4%BB%B6-%E4%BB%BB%E6%84%8F%E9%A1%B5%E9%9D%A2API%E6%9F%A5%E8%AF%A2%E6%8E%A5%E5%8F%A3.html


一、举例说明

例如新闻详情页面的默认地址是:

http://www.demo.com/index.php?s=demo&c=show&id=110

那么,我们可以用《任意页面接口》读取本页面的数据:

http://www.demo.com/index.php?appid=1&appsecret=FCAD3481CFB2D55&s=demo&c=show&id=110

返回全部数据为:

image.png


二、自定义回调方法

如上例所示,返回的结果实在太多了,不利于APP的传输,那么CMS支持自定义回调方法(定义方法参考《回调方法》章节),参数格式如下:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_call_function=[回调方法名称]&[任意页面地址参数]


三、任意页面接口的其他例子

1、模块内容列表或搜索

/index.php?appid=[APPID]&appsecret=[appsecret]&s=[模块目录]&c=search&pagesize=10&page=1

2、模块内容详情页面

/index.php?appid=[APPID]&appsecret=[appsecret]&s=[模块目录]&c=show&id=[文章内容]id

3、模块内容评论页面列表

/index.php?appid=[APPID]&appsecret=[appsecret]&s=[模块目录]&c=comment&id=[文章内容]id

4、模块栏目列表页面

/index.php?appid=[APPID]&appsecret=[appsecret]&s=[模块目录]&c=category&id=[栏目id号]



四、查询出来的数据有问题怎么排查?

方式1、通过接口访问,(去掉回调函数参数api_call_function)试试变量是否出了,如果不出来说明数据库无这个字段

方式2、通过接口访问,(加上回调函数参数api_call_function=你的函数名称)试试变量是否出了,如果不出来说明回调函数写法有问题

任意页面的数据提交接口

视频操作教程:https://www.xunruicms.com/doc/video-dev-API%E6%8F%92%E4%BB%B6-%E4%BB%BB%E6%84%8F%E9%A1%B5%E9%9D%A2%E7%9A%84%E6%95%B0%E6%8D%AE%E6%8F%90%E4%BA%A4%E6%8E%A5%E5%8F%A3.html

数据提交接口用于客户端将数据提交至服务端,或者修改已有的服务端数据。

适用于数据提交的请求,例如:用户登录、用户注册、发布文章、发布表单内容等

一、请求地址

1、需要登录时请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录授权码]&api_auth_uid=[用户id]&[任意页面参数]

一般用于用户中心的操作,如修改资料、修改密码、上传头像、发布文章等

2、不需要登录时请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&[任意页面参数]

一般用于不需要登录的地方,如匿名提交表单、匿名评论等

二、请求参数

请求参数必须和电脑端保持一致,开发建议首先抓取电脑端修改或提交数据时的POST数据,那么移动端提交时也要满足你抓取的POST数据格式,必须保持一致。

例如,我不知道用户注册时的表单参数怎么办?image.png

在不知道请求参数的情况下,可以利用这个方法来获取请求参数的data字段格式

1、如上图,打开注册页面的电脑界面

2、如上图,开启google浏览器的开发者模式,并切换到Network选项中

3、如上图,在注册表单里面,随便输入一些,不填写验证码(目的是不让他提交,我要看请求参数)

4、点提交按钮,他会提示错误,并停留在这个页面上

5、你可以在开发者模式里面的Network中看到FormData的全部请求参数了!!!


终端程序需要将请求参数按照图中的结构组装成【数组(一定要是数组)】来提交到宸逸CMS。

例如

微信小程序的提交参数语法:

var postParams = "is_ajax=1"
    +"&data[title]=标题"
    +"&data[content]=内容内容" // 内容
    +"&data[thumb]=999" // 缩略图id
    +"&catid=11";// 栏目11
wx.request({
    url: "提交地址api",
    data: postParams,
    method: 'post',
    header: {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    .....

UniApp的提交参数语法:

uni.request({
    method: 'POST',
    url: "api提交地址", //接口地址。
    data: 'is_ajax=1&data[title]=标题&data[content]=内容&catid=11',
    header: {
        'content-type': 'application/x-www-form-urlencoded' //自定义请求头信息
    },
......

POST请求格式:https://www.xunruicms.com/doc/1134.html


三、任意页面的相关例子

1、修改密码

请求地址:
/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录授权码]&api_auth_uid=[用户id]&s=member&c=account&m=password

请求参数:
is_ajax=1&data[password]=原密码&data[password2]=新密码&data[password3]=再次新密码

返回结果:
修密码接口需要返回新的[登录appsecret],开发者可以重新做本地存储,也可以让用户重新登录。

2、发布文章

请求地址:
/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录授权码]&api_auth_uid=[用户id]&s=member&app=news&c=home&m=add

请求参数:
is_ajax=1&data[title]=...
这里面的参数一定要和电脑页面的POST参数保持一致

3、表单提交,例如test表单

请求地址:
/index.php?appid=[APPID]&appsecret=[appsecret]&s=form&c=test&m=post
如果需要登录才能提交表单,可以加上上面的api参数


请求参数:
is_ajax=1&data[title]=...
这里面的参数一定要和电脑页面的POST参数保持一致

4、发布文章时缩略图文件如何上传

首先要通过《文件上传接口》把文件上传到服务器,并返回id号;

再把id号存储到发布文章的POST表单值中,格式一定要和pc段一致。

5、用户登录

https://www.xunruicms.com/doc/411.html

6、模块评论发布

请求地址:
/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录授权码]&api_auth_uid=[用户id]&s=[模块目录]&c=comment&m=post&id=[内容id]

请求参数:
is_ajax=1&content=评论内容&...
这里面的参数一定要和电脑页面的POST参数保持一致

7、模块的评论点赞支持

请求地址:
/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录授权码]&api_auth_uid=[用户id]&s=[模块目录]&c=comment&m=post&id=[内容id]&rid=[评论记录id]&t=zc

8、模块的评论反对

请求地址:
/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录授权码]&api_auth_uid=[用户id]&s=[模块目录]&c=comment&m=post&id=[内容id]&rid=[评论记录id]&t=fd

9、用户中心头像上传

请求地址:
/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录授权码]&api_auth_uid=[用户id]&s=member&c=account&m=avatar
请求参数:
is_ajax=1&file=[base64图片编码格式]

必须在在客户端把图片文件进行base64编码后传入请求参数中

10、网站表单提交

请求地址:
/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录授权码]&api_auth_uid=[用户id]&s=form&c=表单名称&m=post
请求参数:
is_ajax=1&data[title]=...
这里面的参数一定要和电脑页面的POST参数保持一致

文件字段的上传接口

文件上传也属于数据提交接口的一种,我们可以利用数据提交接口的方法来完成。

请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=api&c=file&m=upload&fid=[文件上传字段的id号]&siteid=[站点id]

fid是你后台自定义上传字段的id号,例如下图中的【9】。

image


请求参数:

表单文件upload的名称name=file_data,这个一定要固定。


前端示例:


  
  

这里以html为例,因为不同的客户端语言方法不一样!



返回结果:


image.png

114是文件的id号,用于发布文章使用储存,url是详细路径。



php版本的客户端示例代码(因为不同的客户端语言方法不一样,只列举php的,以此类推):

sc


----------------------多文件字段如何运用多个文件上传呢----------------

上传原理:通过本接口多次进行上传操作,每次上传成功后,会返回一个附件id号,通过多次上传会返回多个id号,然后再客户端组装为多文件数组格式,再提交到服务器后台。

image

模块内容列表接口

image.png

api插件的模块内容列表接口,针对模块内容列表界面的数据调用。

除了用本教程外,也可以使用任意页面查询接口来实现本教程的功能点。

{xunruicms_img_title}


以列表页接口为例

1、点击进入列表页接口界面

image

2、在输出字段中,勾选你要输出的字段

image


3、点保存配置,更新缓存之后,然后再点测试接口,可查看结果

image




自定义回调函数写法:

当觉得返回数据不满足你的需求时,比如你要多返回一些数据,就会用到此方法

1、打开或新建文件/dayrui/My/Library/Http.php,这个文件专门是定义回调方法的

 $t) {
    
                $rt[$i]['title'] = dr_strcut($t['title'], 20); // 为循环体中的标题截取20个字
            }
    
        }
    
        return $rt;
    }
    
    // 上面是自己加的+++++++++++
    
     //// 下面是系统自带的
}

其中,news_list_call_data就是方法名称,$rt是选中返回的字段遍历数组,需要你手动格式化显示;

2、设置好回调函数

image

3、预览效果接口



自定义模板代码写法:

当觉得返回数据不满足你的需求时,比如你要多返回一些数据,除了用到上面函数方法外,还可以用到此方法

https://www.xunruicms.com/doc/1193.html


比如我在列表中返回当前查询结果的全体数据量,写法是

模块内容列表接口

需要会php技术和模板标签技术。





用户中心列表数据

用户中心列表数据接口属于任意页面API接口的一种,那么方法参数可以参考任意页面API接口。

此接口需要用户登录,因此还需要使用[会员认证码]。


请求格式:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid[用户id]&page=[第几页]&[任意页面参数]


返回结果:

本页的全部数据,默认用户中心的数据放在data[list]数组内容,支持自定义回调方法来规范他们


使用范围:

用户中心的全部列表数据都可以使用本接口读取,例如:文章列表、收藏夹列表、我的交易记录列表、订单列表等等。


分页数控制:

移动端api分页数在后台配置,每页显示多少条数据控制

image.png


相关例子:

文章列表为例,请求地址:

http://www.demo.com/index.php?api_auth_code=ee6d3a0215bd148f80b686a462d6c15e&api_auth_uid=1&appid=1&appsecret=FCAD3481CFB2D55&s=member&app=news&c=home&m=index&page=1

返回结果如下:

image.png

返回数据也可以通过《回调方法》来规范他们


回调方法

回调方法用于格式化输出数据,默认接口会输出一大堆数据,而实际项目中并不需要太多数据,开发者可以使用此方法来规范返回数据,例如按需返回数据、将文件id号转换为实际地址、多组文件返回等格式,需要开发者自己写代码转换。

1、使用方法

只需要在url请求参数中加上参数:

&api_call_function=回调方法名称


2、回调方法定义方式:

http://help.xunruicms.com/351.html


模块内容阅读数累加统计

模块内容阅读数累加统计,请求一次接口增加一次阅读量:


接口格式如下:

/index.php?appid=[APPID]&appsecret=[appsecret]&s=api&c=module&app=模块目录&m=hits&id=内容id


返回格式:

"code":1, // 1表示成功
"msg":2002," // 表示当前阅读数


api图片验证码调用

在api提交数据时调用图片验证码图片

网站域名/index.php?appid=[APPID]&appsecret=[appsecret]&s=api&c=api&m=captcha&width=图片宽度&height=图片高度


这个地址用于生成图片验证码的

表数据修改/新增/删除

任意表数据:修改/新增/删除

权限配置属性:

{xunruicms_img_title}

需要提前在对应的接口密钥中配置操作权限和数据表权限


一、新增接口


请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=httpapi&m=insert&call=[回调格式化函数]


请求参数:

table:数据表名
value: 入库格式数组[ "字段名1" => "字段值1", "字段名2" => "字段值2", ]


相关例子:

1、新建表dr_api_test

CREATE TABLE IF NOT EXISTS `dr_api_test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(250) NOT NULL COMMENT '标记',
  `content` varchar(255) NOT NULL COMMENT '备注',
  `inputtime` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `inputtime` (`inputtime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='api数据测试表';


2、通过api接口插入数据

请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=httpapi&m=insert

POST数据格式:

table=api_test&value[title]=标题姓名&value[content]=内容部分话&


3、数据返回

{"code":自增ID,"msg":"ok","data":[]}

数据库结果:

image.png


4、如何进行格式化数据?

例子中的api_test表有一个inputtime字段是录入时间作用,一般情况下需要调用当前时间插入进去,其实我们可以使用格式化数据的方法

请求地址改成

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=httpapi&m=insert&call=api_test

加了一个参数

call=api_test

表示调用这个方法来进行数据格式化操作

回调方法的定义方法:https://www.xunruicms.com/doc/351.html

方法我们可以写成

    public function api_test($id, $value) {
        // id是数据的自增id,为0时表示新增
        $value['inputtime'] = SYS_TIME;// 当前时间
        return $value;
    }

数据库效果:

image.png



二、数据更新修改接口


请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=httpapi&m=update&call=[回调格式化函数]


请求参数:

table:数据表名
id: 表的主键id号
value: 修改格式数组[ "字段名1" => "字段值1", "字段名2" => "字段值2", ]


相关例子:

1、表dr_api_test


2、通过api接口插入数据

请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=httpapi&m=update

POST数据格式:

id=1&table=api_test&value[title]=标题姓名222&value[content]=内容部分话222&



3、数据返回

{"code":ID,"msg":"ok","data":[]}

image.png


4、支持回调数据的写法,参考上面例子


三、数据删除接口


请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=httpapi&m=delete


请求参数:

table:数据表名
id: 表的主键id号


相关例子:

1、表dr_api_test


2、通过api接口插入数据

请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=httpapi&m=delete

POST数据格式:

id=1&table=api_test

删除id=1的数据


3、数据返回

{"code":1,"msg":"ok","data":[]}

删除就没有1的数据了

image.png

用户注册接口

本接口用于注册用户,并返回用户基本信息和登录appsecret。

请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&s=member&c=register&

请求POST参数:

is_ajax=1&is_protocol=1&data[username]=账号&data[password]=密码&data[password2]=确认密码&data[email]=邮箱可选&data[phone]=手机号码可选

参数需要和pc的form抓取的参数保持一致。

POST请求格式:https://www.xunruicms.com/doc/1134.html


返回结果:

[
    "code" : 0表示失败, 大于0表示成功了
    "msg": 失败是的错误提示
    "data" : 注册成功的用户基本属性

]



注册时使用手机验证码认证时,需要提前从服务端发送验证码并获取这个验证码字段code,例如:

1、发送验证码给手机,并返回验证码值:

/index.php?appid=[APPID]&appsecret=[appsecret]&s=member&c=api&m=register_code&id=手机号&code=xunruicms

如果提示图片验证码不正确的错误,你可以在cms后台:系统-系统设置-api设置-图片验证码选择禁用

2、此接口返回数据:

[
    "code" : 0表示失败, 大于0表示成功了
    "msg": 失败是的错误提示
]

3、在app注册界面新增字段用于提交手机收到的验证码:

name为sms即可,不需要data包起来


短信登录接口

本接口用于验证用户的登录,并返回用户基本信息和登录appsecret。

GET请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&s=member&c=login&m=sms

POST请求参数:

is_ajax=1&data[phone]=手机号码&sms=手机收到的验证码

POST请求格式:https://www.xunruicms.com/doc/1134.html


返回结果:

image.png


以上数据中的auth就是登录认证码,如果要请求验证登录的任意页面时必须使用该认证码。

APP或者小程序开发时,通常将以上数据缓存本地,以便判断用户是否已经登录。



登录时使用手机验证码认证时,需要提前从服务端发送验证码并获取这个验证码字段code,例如:

1、发送验证码给手机,并返回验证码值:

/index.php?appid=[APPID]&appsecret=[appsecret]&s=member&c=api&m=login_code&id=手机号&code=xunruicms

如果提示图片验证码不正确的错误,你可以在cms后台:系统-系统设置-api设置-图片验证码选择禁用

2、此接口返回数据:

[
    "code" : 0表示失败, 大于0表示成功了
    "msg": 失败是的错误提示
]

3、在app注册界面新增字段用于提交手机收到的验证码:

name为sms即可,不需要data包起来



文件删除接口

文件删除需要验证登录账号,只能删除登录账号上传的文件


请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid[用户id]&s=api&c=file&m=file_delete&id=[文件的id号]

id是你后台附件的id号。


返回结果:

[
    code => 1或0,
    msg => '失败原因'
 ]




点赞插件接口

1、支持接口

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=zan&c=home&m=digg&app=模块目录&id=模块内容id&value=1


2、反对接口

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=zan&c=home&m=digg&app=模块目录&id=模块内容id&value=0


3、是否支持接口

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=zan&c=home&m=is_digg&app=模块目录&id=模块内容id&value=1


4、是否反对接口

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=zan&c=home&m=is_digg&app=模块目录&id=模块内容id&value=0




hy空间插件接口

1、用于hy插件的关注接口

index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=hy&c=show&m=friend&uid=对方会员id号&


返回格式

{
    code: 1 成功 / 0失败,
    msg: "",
    data : {
        status: 1 表示关注成功 2表示相互关注  0表示取消关注
        value: 文字提示
    }
}


2、用于hy插件的判断是否被关注的接口

index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=hy&c=show&m=is_friend&id=对方会员id号&


返回格式

{
    code: 1 成功 / 0失败,
    msg: "",
    data : {
        status: 1 表示关注成功 2表示相互关注  0表示取消关注
        value: 文字提示
    }
}


内容收藏插件接口

收藏插件接口

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=api&c=module&m=favorite&app=模块目录&id=模块内容id&value=1

返回格式:


{

    code: 1,

    msg: 错误信息,

    data: 收藏数量

}


--------------题外写法(不适用于本接口)------------

判断当前登陆用户是否收藏

{if \Phpcmf\Service::M()->db->table(SITE_ID.'_'.MOD_DIR.'_favorite')->where('cid', $id)->where('uid', $member.uid)->countAllResults()}
收藏了
{else}
没有
{/if}


模块栏目信息调用接口

栏目详情接口属于任意页面API接口的一种,那么方法参数可以参考任意页面API接口。


请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&s=news&c=category&id=[栏目id]


返回格式:

data是栏目页面的全部变量


返回数据,非常多,而且乱,你可以使用《回调方法》来规范显示结果。



回调方法

回调方法用于格式化输出数据,默认接口会输出一大堆数据,而实际项目中并不需要太多数据,开发者可以使用此方法来规范返回数据,例如按需返回数据、将文件id号转换为实际地址、多组文件返回等格式,需要开发者自己写代码转换。

使用方法

只需要在url请求参数中加上参数:

&api_call_function=回调方法名称

打开或新建文件/dayrui/My/Library/Http.php,这个文件专门是定义回调方法的

public function my_test3($data) {
        $rt = [
            'name' => $data['name'],// 栏目名称
            'id' => $data['id'],// id号
            'thumb' => dr_thumb($data['thumb'], 200, 200),// 图片id转换为地址
            'content' => $data['content'],
            // 如果想调用更多的字段可以写在这个数组里面
        ];
        return $rt;
    }


回调方法定义方式:

http://help.xunruicms.com/351.html


模块内容详情页接口

api插件的模块内容接口,针对模块内容列表和模块内容详情界面的数据调用。

除了用本教程外,也可以使用任意页面查询接口来实现本教程的功能点。

{xunruicms_img_title}


以内容页接口为例

1、点击进入内容页接口界面,然后选择一个测试内容

{xunruicms_img_title}

2、在输出字段中,勾选你要输出的字段

{xunruicms_img_title}


3、点保存配置,更新缓存之后,然后再点测试接口,可查看结果

{xunruicms_img_title}

注意这里,看到thumb是数字id,我们需要返回图片详情地址怎么办呢?

回到(2)界面,后面的格式化函数,进行把图片id转换为地址

{xunruicms_img_title}

效果如下

{xunruicms_img_title}


自定义回调函数写法:

当觉得返回数据不满足你的需求时,比如你要多返回一些数据,就会用到此方法

1、打开或新建文件/dayrui/My/Library/Http.php,这个文件专门是定义回调方法的

其中,news_show_call_data就是方法名称,$rt是传入的返回数组, ,需要你手动格式化显示;

2、设置好回调函数

image

3、预览效果接口


自定义模板代码写法:

当觉得返回数据不满足你的需求时,比如你要多返回一些数据,除了用到上面函数方法外,还可以用到此方法

https://www.xunruicms.com/doc/1116.html



汇总一些api数据接口的回调开发

查询指定用户的资料

https://www.xunruicms.com/wenda/25400.html


调用的指定的栏目数据

https://www.xunruicms.com/wenda/25200.html


定义的用户中心会员发布的文章列表回调参数

https://www.xunruicms.com/wenda/25162.html


用户中心的投稿内容列表API图片方法定义

https://www.xunruicms.com/wenda/25120.html


删除评论功能

https://www.xunruicms.com/wenda/41927.html


头像上传接口

本接口用于注册用户上传自己的头像和更新头像

请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&api_auth_code=[登录appsecret]&api_auth_uid=[用户id]&s=member&c=account&m=avatar&r=9351

请求POST参数:

is_ajax=1&file=base64格式的图片字符串

一定要传入base64格式的图片

POST请求格式:https://www.xunruicms.com/doc/1134.html


返回结果:

[
    "code" : 0表示失败, 大于0表示成功了
    "msg": 失败是的错误提示
    "data" : 用户基本属性

]


注意事项:更新头像后,头像地址并不会发发生变化,客户端程序需要自己更新本地缓存才能看到最新的头像



模块内容页附加自定义模板代码

本教程需要专业的PHP或模板标签技术基础。


本功能用于对数据的返回处理,例如把图片数字id转换为正式URL等等。

模块内容页附加自定义模板代码


例如:将show.html模块内容页的变量进行实例化自定义输出

$api变量为返回的数据数组变量

{php $api['新变量'] = '这是新加的title字符';}


例如:show.html变量名为:{$title},那么在本段代码也是一样的写法:

{php $api['title'] = $title.'这是新加的title字符';}


文章上下页变量传递:

{php $api['preveid'] = $prev_page['id'];}
{php $api['preve'] = $prev_page['title'];}

{php $api['nexteid'] = $next_page['id'];}
{php $api['nexte'] = $next_page['title'];}


用户信息获取接口

通过用户id号获取用户详细资料和头像地址


请求地址:

/index.php?appid=[APPID]&appsecret=[appsecret]&s=httpapi&m=member&uid=[用户的id]


返回格式:

[
    "code" : 0表示失败, 大于0表示成功了
    "msg": 失败是的错误提示
    "data" : 用户信息数组


]


----------回调函数写法-----------

https://www.xunruicms.com/doc/351.html


public function my_member($data) {
   
    if ($data && $data['id']) {
        $data['aaa'] = 1; // 新建的返回变量
    }

    return $data;
}


自定义数据接口-php执行文件代码

image

当系统本身的接口不满足你的需求时,你可以在这里进行接口自定义服务端代码(本类型需要有php的开发经验)。


用法举例

查询全部用户,并返回username和email数据

1、定义test.php接口文件:./dayrui/App/Httpapi/Api/test.php

table('member')->getAll();
if ($data) {
    foreach ($data as $r) {
        $return[] = [
            'id' => $r['id'],
            'username' => $r['username'],
        ];
    }
}

这里就写入你的php代码,查询语句,提交语句等等。


中途返回也可以这样写:

\Phpcmf\Service::C()->_json(1, '我的返回脚本成功了', ['返回数组']); // 成功写法
\Phpcmf\Service::C()->_json(0, '我的返回脚本失败了'); // 失败写法



2、后台选择test.php文件

image.png


3、测试请求结果时,返回格式为:

array(3) {
  ["code"]=>
  int(1)
  ["msg"]=>
  string(2) "ok"
  ["data"]=>
  array(13) {
    [0]=>
    array(2) {
      ["id"]=>
      string(1) "1"
      ["username"]=>
      string(5) "admin"
    }
    ......

本类型对php技能要求比较高,如果遇到执行错误可以在错误日志检查结果。




网站信息接口

网站信息结果用于把网站logo,网站名称,网站友情链接,幻灯图片等自定义的网站信息字段数据传输给app端

image

然后设置网站输出的信息字段:

image

你定义了哪些字段就勾选哪些字段

针对数据不满意你的需求,字段后面可以设置回调函数来对值进行格式化处理


======附加自定义模板代码的用法===========

{php $api['title'] = '这是新加的title字符';}

效果:

{xunruicms_img_title}

模块列表页附加自定义模板代码

本教程需要专业的PHP或模板标签技术基础。


本功能用于对数据的返回处理,例如把图片数字id转换为正式URL等等。


例如:将list.html模块列表页的变量进行实例化自定义输出

给循环体内附加新变量

{loop $api $key $t}
{php $api[$key]['新变量'] = '这是新加的title字符';}
{/loop}

效果如下:

{xunruicms_img_title}



网站栏目接口

api插件的网站栏目接口,针对栏目数据循环调用和单个栏目调用等。


{xunruicms_img_title}

以共享栏目接口为例

1、点击进入栏目接口界面

2、在输出字段中,勾选你要输出的字段,不勾选表示全部数据

{xunruicms_img_title}


3、点保存配置,更新缓存之后,然后再点测试接口,可查看结果

{xunruicms_img_title}



参数说明:

pid=0:调用顶级栏目集合
pid=栏目ID:调用栏目ID下面的子栏目集合
id=栏目ID:调用单个指定栏目数据



自定义回调函数写法:


1、打开或新建文件/dayrui/My/Library/Http.php,这个文件专门是定义回调方法的

 $t) {
    
                $rt[$i]['na'] = dr_strcut($t['name'], 20); // 为循环体中的标题截取20个字
            }
    
        }
    
        return $rt;
    }
    
    // 上面是自己加的+++++++++++
    
     //// 下面是系统自带的
}

其中,cat_list_call_data就是方法名称,$rt是选中返回的字段遍历数组,需要你手动格式化显示;

2、设置好回调函数

{xunruicms_img_title}

3、预览效果接口


千万不要把系统自带的代码删了


栏目接口附加自定义模板代码

本教程需要专业的PHP或模板标签技术基础。


本功能用于对数据的返回处理,例如把图片数字id转换为正式URL等等。


将栏目循环集合的变量进行实例化自定义输出

给循环体内附加新变量

{loop $api $key $t}
{php $api[$key]['新变量'] = '这是新加的title字符';}
{/loop}

效果如下:

{xunruicms_img_title}




自定义数据接口-自定义模板标签

这种api解析接口用的人是最多的,也是最方便的

自定义数据接口-自定义模板标签

本类型需要有CMS模板标签的使用经验,直接写标签代码返回结果,本类型可以直接在标签里面写赋值方法和格式化显示,不需要写回调方法

{xunruicms_img_title}

这里循环出news模块的全部数据,只显示id,title,再把thumb转换为url地址。

--------------

也可以这样写,原理是将输出变量赋值给$api数组:

{module module=news}
{php $api[$key]=[];}
{php $api[$key]['id']=$t['id'];}
{php $api[$key]['title']=$t['title'];}
{php $api[$key]['thumb']=dr_thumb($t['thumb'], 200,200);}
{/module}


以上语法格式为:

{xunruicms_img_title}