1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP接口API文档转换SDK【神器】

作者:用户 来源:互联网 时间:2017-12-01 20:29:58

文档接口

PHP接口API文档转换SDK【神器】 - 摘要: 本文讲的是PHP接口API文档转换SDK【神器】, 代码:http://download.csdn.net/detail/huangbin95487710/9261841 GIT地址:https://github.com/aixiaoyi123/php_api_document PS:GI

代码:http://download.csdn.net/detail/huangbin95487710/9261841

GIT地址:https://github.com/aixiaoyi123/php_api_document

PS:GIT版本为开发调试版本,不能保证其稳定。CSDN的版本为GIT上封装完最稳定的版本,请斟酌下载。

演示地址:http://222.73.37.41:8001/bbs/document/Example.php?document=truxish2114558de

效果图:

  • API JSON
  • <a href=PHP接口API文档转换SDK【神器】">
  • 转换TXT文档
  • PHP接口API文档转换SDK【神器】
  • 转换JAVA代码
  • PHP接口API文档转换SDK【神器】
  • 转换SWIFT代码
  • PHP接口API文档转换SDK【神器】

输出支持:

  • TXT文档
  • JAVA
  • SWIFT

解决问题:

  • 免手写Word文档来告知第三人此API输出的内容字段含义以及需要哪些接收参数,降低沟通成本
  • 每次API升级,输出内容都会打上版本号以及终端文件。只要在终端项目里面,GIT或者SVN即能看出本次升级更改的内容
  • 与终端对接API接口调试,成功率提升到100%
  • 终端无需理会数据接口,只需要把大部分的精力用在UI界面上

功能介绍:

  • 输出Txt格式的文档
  • 输出android端所需要的数据解析类以及数据请求类
  • 输出ios端所需要的数据解析类
  • 输出的数据类,包含原生系统自带的解析方式与第三方自动序列化方式(如:GSON)
  • 针对未注释字段,自动英汉翻译
  • 自动转换PHP输出json字段类型,由通用字符串类型自动归类(Int,Float,Long,String,Boolean)
  • 终端语言模板化,可自行更改终端语言输出模板
  • 自动根据字典文件的最后修改日期转换为终端语言文件的版本号,如
  • /** * push信息表 * @version 20151105.20.39 * @author HuangYi * @link email:[email protected] * */public class PushInfoData {


配置文件Config.php:

  • 翻译设置(目前是接入百度翻译,需要自行去注册一个KEY)
  • //百度翻译KEYdefine("BAIDU_LANGUAGE_APPKEY", "6e87261cf9d883ddc2bc4c629991a087");//启动翻译模式define("OPEN_LANGUAGE_MODE", true);//翻译过滤字段,简单说就是过滤那些一看就明白意思的字段define("AZ_LANGUAGE_FILTER", "{id}{date}{clientdate}{sex}");

  • JAVA设置,路径的设置是为了让终端开发者直接以文件夹形式下载所有接口文件
  • //JAVA包名define("JAVA_PACKNAME", "yousi.com.http.data");//JAVA数据类保存路径define("JAVA_DATA_SAVE_PATH", "/java/yousi/com/http/data/");//JAVA HTTP包名define("JAVA_HTTP_PACKNAME", "yousi.com.http");// JAVA请求数据类保存路径define("JAVA_HTTP_DATA_SAVE_PATH", "/java/yousi/com/http/");

  • TXT设置,路径的设置是为了让终端开发者直接以文件夹形式下载所有接口文件
  • //TXT数据类保存路径define("TXT_DATA_SAVE_PATH", "/txt/http/data/");//TXT请求数据类保存路径define("TXT_HTTP_DATA_SAVE_PATH", "/txt/http/");

  • SWIFT设置,路径的设置是为了让终端开发者直接以文件夹形式下载所有接口文件
  • //SWIFT数据类保存路径define("SWIFT_DATA_SAVE_PATH", "/swift/http/data/");//SWIFT请求数据类保存路径define("SWIFT_HTTP_DATA_SAVE_PATH", "/swift/http/");

SDK接入:

  • /**引用类路径*/include_once(dirname(__FILE__)."/../document_sdk/Element.php");/**以下为API接口测试数据*/$pinfo = array();$pinfo['id']=2;$pinfo['uid']='10086';$pinfo['rid']='10086';$pinfo['money']=100.25;$pinfo['key']='tokendddsxsedfs115';$pinfo['alias']='techer';$pinfo['aliastype']='yousi.com';$pinfo['date']='2015-11-12 15:17:23';$pinfo['clientdate']=1446450068;$pinfo['info']=$info;$pinfo['grade']=$grade;$pinfo['comments']=$comments;$pinfo['userinfo']=$userinfo;/**测试地址 Example.php?document=truxish2114558de&parse=java*//**<在输出JSON API接口前面添加以下语句*/document($pinfo,'PushInfoData');/**输出JSON格式*/Json::echoJson($pinfo);


  • 其中接口转换文档参数
    • document为请求秘钥,自行更改,加密作用。
    • parse为转换类型,目前支持java,swift,txt格式。
    • azauto为英汉翻译开关,true开启,false关闭。
  • PushInfoData参数实为Class.PushInfoData.php简参,JSON输出数据解析字典
    • 字典元素分类
    1. key=>注释,此用来标示普通字段
      • /**API数据片段*/$pinfo['rid']='101';/**对应字典写法*/"rid"=>"回复ID"
      • 对应输出的JAVA代码片段/** 回复ID */ public int rid = 0; 

    2. key=>array(),此用来标示数组元素又是数组,如
      • /**API数据片段*/$comment_data = array();$comment_data['uid'] = 10086;$comment_data['name'] = "大帅";//无论是多维数数组,只需写一个维度的字典$comments = array($comment_data,$comment_data);$pinfo['comments']=$comments; /**对应字典写法*/$comments_keys =array("uid"=>"用户账号","name"=>"昵称");$keys['comments'] = $comments_keys;

      • 对应输出的JAVA代码片段,从下面看出Comments 类本身没有注释 	/** */   	public class Comments {     	/** 用户账号 */     	public int uid = 0;     	/** 昵称 */     	public String name = "";     	public Comments getBase(Context mContext, JSONObject jsonObject) {       	Comments mBase = new Comments();       	try {         	mBase.uid = HttpBase.jsonToInt(jsonObject, "uid");         	mBase.name = HttpBase.jsonToString(jsonObject, "name");       	} catch (Exception e) {         	e.printStackTrace();         	MyLog.d(RerviceHttp.class, "Comments error e:"+e.getMessage());       	}       	return mBase;     	}   	} 


    3. key=>array(key=>array()),此用来解决第2条输出代码片段没有注释,如
      • /**API数据片段*/$info = array();$info['up'] =1;$info['down'] =1;$pinfo['info']=$info;/**对应字典写法*/$info_keys = array("基础信息" => array("up"=>"支持数","down"=>"反对数"));$keys["info"]=>$info_keys

      • 对应输出的JAVA代码片段,从下面看出类名为key本身	/** 基础信息 */   	public Info info = new Info();   	/** 基础信息 */   	public class Info {     	/** 支持数 */     	public int up = 0;     	/** 反对数 */     	public int down = 0;     	public Info getBase(Context mContext, JSONObject jsonObject) {       	Info mBase = new Info();       	try {         	mBase.up = HttpBase.jsonToInt(jsonObject, "up");         	mBase.down = HttpBase.jsonToInt(jsonObject, "down");       	} catch (Exception e) {         	e.printStackTrace();         	MyLog.d(RerviceHttp.class, "Info error e:"+e.getMessage());       	}       	return mBase;     	}   	}
    4. ClassElement指定类名元素,此用来解决第3条指定类名,如
      • /**API数据片段*/$info = array();$info['up'] =1;$info['down'] =1;$pinfo['info']=$info;/**对应字典写法*/$info_keys = array("基础信息" => array("up"=>"支持数","down"=>"反对数"));$info_keys = new ClassElement("InfoData",$info_keys);$keys["info"]=>$info_keys

      • 对应输出的JAVA代码片段        /** 基础信息 */   	public InfoData info = new InfoData();   	/** 基础信息 */   	public class InfoData {     	/** 支持数 */     	public int up = 0;     	/** 反对数 */     	public int down = 0;     	public InfoData getBase(Context mContext, JSONObject jsonObject) {       	InfoData mBase = new InfoData();       	try {         	mBase.up = HttpBase.jsonToInt(jsonObject, "up");         	mBase.down = HttpBase.jsonToInt(jsonObject, "down");       	} catch (Exception e) {         	e.printStackTrace();         	MyLog.d(RerviceHttp.class, "InfoData error e:"+e.getMessage());       	}       	return mBase;     	}   	} 

    5. NoteElement指定元素类型,将不会在自动归类,如
      • /**API数据片段*/$pinfo['uid']='10086';/**对应字典写法*/$uid_keys = new NoteElement("用户UID",Element::TYPE_KEY_STRING);$keys["uid"]=>$uid_keys

      • 对应输出的JAVA代码片段,从下面看出uid自动归类应为Int类型,但强制为String类型/** 用户UID */ public String uid = ""; 

    6. FileElement指定请求参数为文件上传,如
      • /**对应请求参数字典写法*/$file = new FileElement("文件上传");$keys['file'] = $file;
      • 对应输出的JAVA代码片段  	/** 文件上传 */   	public Map mUploadFile = new HashMap();   	public void setfilePath(String mPath) {     	setPath("file", mPath);   	}   	private void setPath(String mKey, String mPath) {     	mUploadFile.put(mKey, new File(mPath));   	}   	@Override   	public Map getSendFile() {     	if (mUploadFile == null || mUploadFile.size() <= 0) {       	return new HashMap();     	}     	return mUploadFile;   	} 





以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文档 , 接口 ,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备