首页 | 新浪云计算 | weibo微博帐号登录

XML描述

XML元素说明
XML元素 描述
api 根元素,其他所有的xml元素都必须被根元素包含。
父元素:
子元素:method object
属性:
method 描述一个API的方法,在一个api定义中必须至少有一个方法存在。
父元素:
子元素:url - parameters - result - error
属性:
name【必须】
数值范围: [0-9a-zA-Z-_\/]+
请使用与method功能描述相关的命名
http [必须]
http方法常用的请求
可用值: GET - POST - PUT - DELETE
url 描述方法中的URL,地址中无需带上域名信息,URL必须以“/”开始,并以非“/”结束。变量参数必须以大括号包含, 如{ param } 。 最好将URL包含进CDATA中。
父元素: method
子元素:
属性:
Examples:
<![CDATA[/users]]
<![CDATA[/users/{id}]]
<![CDATA[/{param}/comments?anotherParam=value]]
<![CDATA[/entity/{param}/entity2/{param2}?param3={param3}&anotherParam=value]]
parameters 此元素包含method中用到的一系列参数列表。 如果需要用到参数必须在此进行定义。
父元素: method
子元素: parameter
属性:
parameter 变量传参。
父元素: parameters
子元素:
属性:
optional [可选]
如果该参数可能不是必需的,则使用此参数。
可选值: true - false
默认值: false
result 如果method有返回值,则可以使用<object>来定义它的返回值。
父元素: method
子元素:
属性:
name [必须]
<object>元素的名字
array [可选]
如果返回的值是数组则此选项有效。
可选值: true - false
默认值: false
error 如果method可能返回错误,则使用返回的object进行定义。
父元素: method
子元素:
属性:
name [必须]
<object>元素的名字
array [可选]
如果返回的值是数组则此选项有效。
可选值: true - false
默认值: false
object JSON返回值的说明,描述了JSON返回的键值及结构。
父元素: api
子元素: field
属性:
name [必须]
名称与<result>和<error>中定义的名称一致。
field 描述JSON返回值的一个键值。在一个object中至少又有一个field。field需与JSON返回值的字段一一对应。
父元素: object
子元素:
属性:
object [可选]
如果field也是一个object,在此定义object的名称。
array [可选]
布尔型值,如果返回值是数组则以此说明。
可选值: true - false
默认值: false
optional [可选]
如果此field是可选项则用此选项说明。
可选值: true - false
默认值: false
XML示例

<api xmlns="http://apibus.io"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://apibus.io/schema/mashape-api-3.0.xsd">
     <!-- 定义方法: get_user_by_id -->
     <method name="get_user_by_id" http="GET" >
          <url><![CDATA[ /2/users/show.json?type=byid ]]></url>
          <parameters>
               <parameter optional="false">id</parameter>
          </parameters>
          <result name="user"></result>
          <error name="error"></error>
     </method>

     <!-- 定义方法: get_user_by_name -->
     <method name="get_user_by_name" http="GET" >
          <url><![CDATA[ /2/users/screen_name.json ]]></url>
          <parameters>
               <parameter optional="false">name</parameter>
          </parameters>
          <result name="user"></result>
          <error name="error"></error>
     </method>

     <!-- 定义User 数据结构 -->
     <object name="user">
          <field>id</field>
          <field>screen_name</field>
          <field>name</field>
          <field>gender</field>
          <field object="status">status</field>
     </object>

     <!-- 定义Status 数据结构 -->
     <object name="status">
          <field>created_at</field>
          <field>source</field>
     </object>

     <!-- 定义Error 数据结构 -->
     <object name="error">
          <field>code</field>
          <field>desp</field>
     </object>     
</api>

SDK代码(演示代码)

<?php
require_once( _APIBUS_HOME . "/apibus/class/apiobject.class.php");
require_once( _APIBUS_HOME . "/apibus/class/fetchurl.class.php");

class Weibo
{
     private $access_key;
     private $secret_key;
     
     function __construct( $access_key=null, $secret_key=null )
     {
          $this->access_key = $access_key;
          $this->secret_key = $secret_key;
     }

     public function get_user_by_id( $id )
     {
          $parameters = array("id" => $id);
          $url = "https://api.weibo.com/2/users/show.json?type=byid";
          $format = 'json'; 
          self::prepareRequest($url,$parameters);
          $do_fetch = new ApiBusFetchUrl($this->accesskey,$this->secretkey);
          $response = $do_fetch -> fetch($url, $parameters );
          if ( $this->isError($response) ) {
               return $response;
          } 
          return $this->decode($response, $format );
     }
     
     public function get_user_by_name( $name )
     {
          $parameters = array("name" => $name);
          $url = "https://api.weibo.com/2/users/screen_name.json";
          $format = 'json'; 
          self::prepareRequest($url,$parameters);
          $do_fetch = new ApiBusFetchUrl($this->accesskey,$this->secretkey);
          $response = $do_fetch -> fetch($url, $parameters );
          if ( $this->isError($response) ) {
               return $response;
          } 
          return $this->decode($response, $format );
     }
}
?>

调用示例(演示代码):
     //@SAE
     调用方法一:
     $weibo = apibus::init( "Weibo");  
     $obj = $weibo>get_user_by_name( "world"); 
     print_r( $obj ); 

     调用方法二:
     $weibo = new apibus();
     $getuser = $weibo>load("Weibo");
     $oobj = $getuser->get_user_by_name("world" );
     
     
     //@SAE 站外
     /**
      * Step1: 下载SDK
      * Step2: 引入代码目录
      */
     define("ACCESSKEY", your ACCESSKEY);
     define("SECRETKEY", your SECRETKEY);

     调用方法一:
     $weibo = apibus::init( "Weibo",1,ACCESSKEY,SECRETKEY);  
     $obj = $weibo>get_user_by_name( "world"); 
     print_r( $obj ); 

     调用方法二:
     $weibo = new apibus(ACCESSKEY,SECRETKEY);
     $getuser = $weibo>load("Weibo");
     $oobj = $getuser->get_user_by_name("world" );