JPress内置API接口的开启与调用详解

JPress之家发布 开发教程,JPress建站 2016-10-24 1006

开发群里不少人关心jpress内置的接口怎么用?如何配置jpress接口供第三方使用?

JPress内置API接口的开启与调用,这个主要是方便第三方系统或者终端调用。

由于官方jpress的api相关文档还没有出来,所以目前文章中相关接口都是根据代码总结而来,会跟着代码更新,所以学习的话注意代码版本。

首先进入jpress后台菜单:设置--->API应用,如下图:

jpress api设置和调用文档

勾选『开启API』这个选项,这个是JPress后台对api进行的全局开关。

『是否允许Ajax跨域请求』这个如果是第三方web调用或者html5开发的app都需要开启,主域名不一致导致ajax跨域会被浏览器拦截,从而影响调用,这个个人视情况开启。

最后就是添加应用名称、APP KEY和APP SECRET三个选项,图中在失色本地测试创建了名为test的应用。

ps:是否上线目前貌似有bug,默认全部是上线的,即启用状态都是enable。所以为了避免安全相关问题,建议本地先进行测试,然后再上线。

那么,相关配置都完成了怎么测试呢?

JPress调用api的地址如下:

http://www.yourdomain.com/api?method=

例如我们访问查询测试的接口

http://www.yourdomain.com/api?method=queryTest

需要注意的是,这么调用是没有效果的,因为服务器端并没有验证来源。那么需要携带哪些参数呢?

根据失色亲测,需要携带:

method:调用方法
appkey:之前设置的appkey
sign:签名
sign_method:签名方法

这四个参数缺一不可,下面失色为大家详细讲解下如何为jpress的api接口生成sign签名参数的值。

首先jpress后台签名验证暂时只有md5验证的方式,所以sign_method设置为md5即可。

生成sign的代码如下,先上代码然后讲解:

public static String signForRequest(Map<String, String> params,String secret) {
		String[] keys = params.keySet().toArray(new String[0]);
		Arrays.sort(keys);

		StringBuilder query = new StringBuilder();
		query.append(secret);
		for (String key : keys) {
			String value = params.get(key);
			if (StringUtils.areNotEmpty(key, value)) {
				query.append(key).append(value);
			}
		}
		query.append(secret);
		return HashKit.md5(query.toString()).toUpperCase();
	}

这里需要一个Map<String,String>的map作为传入变量,那么这个map到底是什么东西呢?还记得调用接口的时候需要传入参数么?这个map就是用那些除了sign以外的参数存入的,放入顺序只要和你api请求的顺序一致即可,是不是很简单~

通过验证,你再调用如下地址,并传入相应参数,你就可以调用api啦,接口如下~

{
"data": null,
"errorCode": 0,
"message": "test ok!"
}