# 云API - [云API](#API_1) - [发布 API 步骤](#_API__2) - [开发说明](#_3) - [模块中调用](#_4) - [调用 API 的条件](#_API__5) - [调用 API 并获取结果](#_API__6) ## 云API - 面向微擎开发者 - 新的防盗版机制 - 避免重复造轮子 - 供自己使用 - **无偿** 或 **有偿** 供其他开发者使用 ## 发布 API 步骤 1. 新增 API, 完善信息, 添加说明文档. 2. 上传 API 版本, 完善版本说明 3. 等待审核 4. 审核通过可以使用 5. 审核拒绝重复 2. 6. 开发者可以在 **[API 广场](http://s.we7.cc/index.php?c=develop&a=api&do=mall&)** 购买他人发布的免费或收费 API. ## 开发说明 1. API 本质就是一个 `class`, 可以含有任意多个方法 ( `method` ) , 输入参数 **$gpc** 等价 **$\_GPC**. 2. API 标识支持大小写字母, 假设为 `$api_name`. 3. API 目录为标识的小写, `strtolower($api_name)`. 4. API 入口文件为 `strtolower($api_name).'.php'` 5. API 方法命名不作特殊要求. 文件目录结构示例 ``` /api /api/lib/test.php /api/api.php ``` API 入口文件示例 ``` class Api { public function method($gpc) { include 'lib/test.php'; // code here } } ``` > 注意事项: > \>1. 开发者必须上传源码,不允许加密,否则不予审核. > \>2. 暂不支持数据库操作与文件读写. 未来将会支持. > \>3. 不要用 `return` 返回值, 请使用 `exit(json_encode($data));` 或 `die($content);`. > \>4. 使用 include, require 时, 请使用 **相对路径** ## 模块中调用 示例 ``` load()->classs('cloudapi'); // 开发版调用方式 $api = new CloudApi(true); // 发布版调用方式 $api = new CloudApi(); $rmb = $api->get('We7Util', 'to_rmb', array('number' => 123400786)); print_r($rmb); ``` ## 调用 API 的条件 - API 审核通过 - 模块在云服务备案(在线设计或已发布) 调用API需要满足以下条件: - 模块所有者为开发者 - 此 - 所调 API 审核通过 - 拥有 API 的所有权(作者)或使用权(购买获得) 发布版调用权限需要满足以下条件: - 已注册站点 —— 普通版、商业版、授权版 - 正版模块 —— 在线购买安装 - 模块开发者拥有所调 API 的使用权(开发或购买) ## 调用 API 并获取结果 三种调用方式 - url 访问链接 - get 带参数 GET 请求 - post 带参数 POST 请求 > 调用参数 名称 类型 必填 描述 说明$api string 是 API标识,目录名,类名,php文件名 $method string 是 方法名称 $url\_params array 否 query string $post\_params array 否 提交的参数 $dataType string 否 返回值类型 json:使用GET,POST将获得php array类型 ;<br/>html:> 返回值 array | string - - - - - - #### URL 访问链接 获取一个 `url`, 如获取一个二维码或页面. > 开发示例 ``` class We7Util { public function qrcode($gpc) { require 'phpqrcode.php'; if (empty($gpc['content'])) { json_result(error(1,'参数错误.')); } $errorCorrectionLevel = "L"; $matrixPointSize = "8"; $text = trim($gpc['content']); QRcode::png($text, false, $errorCorrectionLevel, $matrixPointSize); exit(); } } ``` > 调用示例 ``` load()->classs('cloudapi'); $cloud_api = new CloudApi(); $url = $cloud_api->url('We7Util', 'qrcode', array('content' => 123400786)); echo '<img src="'.$url.'">'; exit; ``` - - - - - - #### GET > public function url($api, $method, $url\_params = array(), $dataType = 'json') 示例: 金额转人民大写 ``` load()->classs('cloudapi'); $cloud_api = new CloudApi(); $rmb = $cloud_api->get('We7Util', 'to_rmb', array('number' => 12300678.89), 'json'); print_r($rmb); ``` #### POST > public function post($api, $method, $post\_params = array(), $dataType = 'json') 示例: 中奖概率 ``` load()->classs('cloudapi'); $cloud_api = new CloudApi(); $post_data = array( 'prizes' => array( array('prize' => '飞机', 'rate' => 1), array('prize' => '大炮', 'rate' => 2), array('prize' => '花椒', 'rate' => 10), array('prize' => '大料', 'rate' => 20), array('prize' => '谢谢惠顾', 'rate' => 67), ) ); $prize = $cloud_api->post('We7Util', 'probability', $post_data, 'json'); var_dump($prize); ```