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


服务商店介绍

  如果您并不擅长将业务产品化,我们建议您将核心业务封装成API接入服务商店; 或者您已经拥有一个很酷的API,我们也建议您接入服务商店。

  服务商店针对服务接口特点,提供一套服务计费体系,API 接入后您即可轻松获得收益。

  服务商店提供一个多语言SDK生成工具,您只需写好XML描述文档,通过工具即可自动生成 PHP、JAVA、Python、ObjectC、NodeJS 等多语言SDK及使用文档,帮您节省开发成本。

  您的API接入服务商店后,即可同步推送到 Sina App Engine 作为SAE平台的扩展服务,供数十万开发者使用!SAE的开发者,使用您提供的服务混搭微博API可以创造出更新奇、有价值的应用,您再也不用为推广API发愁了!

 

  未来,我们还将陆续推出服务商店网站、类似Yum的客户端、服务管理工具;您可以通过服务管理工具,自助提交管理API, 查看统计信息、设置计费、配额等。应用开发者可以通过网站或客户端检索、购买服务、下载SDK;我们还会将服务推送到新浪云计算的其他开发托管平台!

• 计费模式

服务商店支持按请求数量计费和按月租用两种计费方式;每项服务可设置多种计费方式,您可依据服务特性自行定制。

服务商店与服务提供方进行分成,作为服务托管费用按每笔20%比例分成。


1.按请求数量计费

您可以设定每次有效请求价格,APIBUS平台按请求单价自动扣除开发者账户的虚拟货币,若开发者账户虚拟货币不足则服务终止。

2.按月计费

您可以设定每月租用价格、每月有效请求数量限额、超限每次请求单价。开发者启用服务时先支付一个月租金,若有效请求数量超额,自动扣除开发者账户付费。
若租约到期或超限后虚拟货币不足则服务终止。(月度计算方式为申请日起至次月同期24点截止)

例:计费方式设定

  价格 限额 超额
按次 10云豆/次 - -
包月A 9000云豆/月 100次 9云豆/次
包月B 800云豆/月 1000次 9云豆/次
全包月 500000云豆/月 无限 -

3.计费选项

1)自动续费 ( 到期自动续费,否则到达阀值前提醒续费 )

2)费用预算 ( 到达阀值提醒 )

3)免费试用周期 ( 最小为1天,不设置上限 )

配额设置

为防止开发者滥用服务资源,您可以按照以下方式,设置请求限制:

        按照特定的周期限定API调用的次数。周期:每分钟,每天,每月。服务提供者可自行定制。


例:

周期 /分 /天 /月 /月
请求限制 10次 100次 500次 无限制

多语言SDK

服务商店提供了一个多语言SDK生成工具,您只需按照xml描述规范提交SDK描述文档,系统即可自动生成多语言SDK,目前已支持语言有PHP, Ruby, Python, Java 和 Objective-C。当然您也可以简单改造已有的SDK上传到服务商店供用户下载。

服务工作原理

服务商店借助于APIBUS完成服务请求的正向转发,在转发过程中判断用户和服务状态,并进行计费配额的控制,最终将结果返回给用户。

工作原理图示

以下图示展示出用户,服务商店和服务提供方的工作流:

工作原理介绍

当您将服务部署在服务商店后,服务商店会自动生成不同语言的sdk供开发者下载,当然您也可以按照sdk标准文档自行编写sdk并上传以供下载。


在工作流中:

  • 开发者通过SDK将授权信息(signature)及其他调用信息作为参数通过HEADER向APIBUS发送请求。
  • 用户的请求经过APIBUS代理进行权限验证及转发,将用户的调用请求发送给服务API。
  • 服务API返回RESPONSE给APIBUS,并在HEADER中带上相应的HTTP CODE码标识是否成功扣费。
  • APIBUS根据返回值及状态码进行计费,配额扣减及错误信息的处理。
  • 最终APIBUS将RESPONSE返回给用户。

服务调用示例

开发者在使用服务的时候非常的简单,只要将sdk部署在开发环境中,包含基类文件,就可以进行调用。为了达到这样的目的,您需要提供服务的API XML描述文件,由服务商店自动生成SDK,或按以下标准自行创建SDK。


1)调用方法说明:


不论由服务商店自动生成还是自己编写的sdk,调用时都必须遵守APIBUS协议,以http 调用的方式进行,主要是为了数据统计,路由管理和平台安全的考虑。

在调用API时需调用统一代理地址:

http://g.apibus.io

调用的信息通过header进行传递,必需的参数如下:

FetchUrl: _FetchUrl_ 用户想要调用的http接口

TimeStamp: _TimeStamp_ 本次请求的时间戳

AccessKey: _AccessKey_ 应用的AccessKey,需要在服务商店注册获取

Signature: _Signature_ 请求的签名,标识用户身份

调用参数可以用GET方式或POST方式进行传参,参数需要以数组方式(示例post方式传参):

$postdata =array('coodonate'=>$coodonate);

$parameters = array(

"post" => $postdata

);

进行http调用即可:

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_URL, "http://g.apibus.io");

curl_exec($ch);

服务商店借助APIBUS完成正向代理和计费统计,并对HEADER中传送的数据进行验证并转发,完成一次服务请求。


2)签名算法说明:


签名(Signature)作为APIBUS调用的主要参数用以校验用户的有效身份,服务商店规定如下的签名算法规则:

_Signature_ = base64_hmac_sha256(Fetchurl + _Fetchurl_ + Timestamp + _Timestamp_ +AccessKey + _AccessKey_ +SecretKey + _SecretKey_)

服务调用示例代码(php):

const FURL = "http://g.apibus.io/"; //代理地址

$url = "http://test.sae.sina.com.cn/testapi.php"; //实际调用地址

$timestamp = time(); //时间戳

$signature = $this->signature($url, $timestamp); //签名算法

$headers = array( //加入header

"FetchUrl: $url",

"AccessKey: $this->accesskey_",

"TimeStamp: $timestamp",

"Signature: $signature"

);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_URL, FURL);

curl_exec($ch);

API规范

服务商店的API透明代理网关,会帮您完成权限认证、服务计费、服务统计等工作;服务商店提供的SDK生成工具,会帮您自动生成多语言SDK;正因有这些特性,所以需要您按照我们定义的API规范来设计API,保证API可以顺利接入服务商店。

接口规范

您所提供的服务API接口地址必须遵循REST标准进行定义,服务提供者需要支持REST格式调用访问。
URL基本格式

http://域/版本/资源类/接口名称.返回值格式?参数

1.使用小写字母。
2.严格按照规定的格式定义API URL。

格式说明
名称 说明
允许APIBUS 代理服务器可以直接访问到该域。 如使用代理服务域地址,则需允许 g.apibus.io 访问该域。
版本 使用版本号区分不用版本的接口。 *只能使用阿拉伯数字作为版本号。
资源类 APIBUS 推荐使用REST 设计和开发方式, 将一组接口划分在一个资源类中, 更便于开发者使用。
1) 资源类名称由小写字母和下划线组成。( [a-z_]+)
2) 资源类名称不能为空。
接口名称 APIBUS 推荐使用英文命名接口。尽量保证接口名称可以准确表达接口功能, 便于开发者使用。
一些常用关键字已经作为系统关键字保留,请不要使用。如: create、new、 destroy、show、update等。
接口名称由小写字母和下划线组成。( [a-z_]+)
返回值格式 调用接口后返回的数据格式,目前支持Json和XML。
参数 APIBUS 推荐使用英文单词缩写作为参数名称。尽量保证参数名称可以准确表达接口功能, 便于开发者使用。
如: id、page、max_id 等。 参数名称由小写字母和下划线组成。( [a-z_]+)
实例

http://test.sinaapp.com/1/dir/createdir.json?create_name=tempdir

实例说明
URL 名称
test.sinaapp.com
1 版本
dir 资源类
createdir 接口名称
json 返回值格式
create_name=tempdir 参数

HTTP RETURN 状态码定义

APIBUS会根据http返回码判断执行状态及是否计费。

HTTP 调用返回状态码及说明

状态码 状态说明
200 *执行成功, 计费。
201 *执行成功, 不计费。
304 NOT MODIFIED 没有数据返回
400 BAD REQUEST 请求数据不合法
401 Not Authorized 没有进行身份验证
403 Forbidden 没有权限访问对应的资源
... ...

200和201作为唯一有效的两个状态码,如果调用成功必须返回,其他状态码对APIBUS无实际意义。

接口错误信息返回值定义

APIBUS错误信息返回格式(请您注意:状态码1-1000作为系统自保留,服务不得占用。)

数据结构 ApiBusError

errcode: 错误编码
errdesc: 错误描述

返回值格式

JSON

返回码定义:

状态码 英文说明 解释
0 success 成功
600 internal_error Fetchurl 内部错误
601 no_such_user _AccessKey_ 不存在
602 auth_error 认证错误,可能是secretkey 不正确
603 out_of_quota 超出fetchurl 的使用配额
604 rest_error REST 协议错误,相关的header 不存在或其它错误
605 invalid_uri _FetchUrl_不是有效的Url
606 invalid_host _FetchUrl_对应的服务器不可达或者是一个私网地址
607 service_not_enabled _FetchUrl_对应的扩展服务尚未启用

返回错误样例(JSON):

{"ApiBusError":{"errcode":"600","errdesc":"internal_error"}}

{"ApiBusError":{"errcode":"601","errdesc":"no_such_user"}}

多语言SDK

        您可以提交SDK 描述文档,系统会依据文档描述自动生成多语言SDK; 也可是自己编写SDK,如您希望将服务同时接入到SAE,那么您提供的PHP SDK需兼容APIBUS特性。我们推荐您采用系统自动生成的方式。

自动生成SDK

您只需要按照《XML描述文档》进行API xml文件的编写,在服务商店上传并完善此文档相关联的说明与帮助,就可以自动生成一整套完善的多语言sdk包,简要说明文档,实例。帮助服务使用者快速上手。


流程图示:


1.按照XML描述文档进行SDK xml文档的编写。描述文档介绍请参考>>XML文档

2.在服务商店后台或接入流程中提交SDK描述文档。

3.在服务商店后台或接入流程中完善帮助文档。

4.提交完成,自动生成多语言SDK和说明及样例。

手工修改SDK示例

如果您已经有编写好的SDK了,那么您只需要按照SDK编写规范中的说明,对SDK简单的调整一下就可继续使用了,并上传到服务商店供服务使用者下载。


流程图示:


1.在服务商店后台或接入流程中提交SDK源码。

2.在服务商店后台按照APIBUS标准修改源码(也可修改后再上传)。

3.提交完成,上传的SDK供使用者下载。

手工修改SDK示例

现在以短信服务为例进行服务使用的说明。


1.调用api修改:调整原来的接口地址,改为服务商店代理地址

原: baseurl = 'http://sae.sina.com.cn/sendsms.php';

改为:baseurl = 'g.apibus.io';

$fetchurl = 'http://x.sae.sina.com.cn/sendsms.php';

2.无需重新定义调用方法和授权,只需要包含fetchurl文件,将实际调用的接口获取结果的部分换为以下部分,生成实例进行调用即可。

require_once("fetchurl.class.php");

$do_fetch = new ApiBusFetchUrl();

$response = $do_fetch -> fetch($fetchurl);

这样就改造完成了。


3.在非SAE下使用需要在调用时带上accesskey参数,作为授权校验信息调用即可。

define("ACCESSKEY", "****");

define("SECRETKEY", "****");

$do_fetch = new ApiBusFetchUrl(ACCESSKEY, SECRETKEY);

使用服务

        以短信服务为例进行服务使用的说明。

在SAE上使用

因为是在SAE环境下,所以无需再定义accesskey和secretkey,直接调用即可,代码如下:

$Sms = apibus::init("Sms");

$sendmeg->send('13810008888','hello world','UTF-8');

在SAE环境使用服务是多么的简单!

在个人服务商上使用(暂不支持收费服务)

1.在服务商店找到短信服务,并下载php版本的SDK包,将压缩包解压后得到一个文件夹和一个文件:

apibus:基本客户端php类库文件包

sample:用例文件

apibus.class.php:初始化类文件

2.在同一路径下创建一个文件用来调用服务,举例:sample.php

/*因为不在SAE环境下,所以需要自行填入开发者的ACCESSKEY和SECRETKEY。*/

require_once("../apibus.class.php");

define("ACCESS_KEY", "******");

define("SECRET_KEY", "******");

$Sms = apibus::init("Sms", 1, ACCESSKEY,SECRETKEY);

$obj = $Sms->send("138100000000", "测试","UTF-8" );

在非SAE环境使用服务也很便捷

服务接入流程

        API接入服务商店需要按照服务接入流程提交服务接入申请,并在线填写服务申请表,为了保证服务的质量并保护开发者的权益,我们将采用实名登记。完成申请流程您就可以发布服务了。

第一步:提交申请

登陆服务商店,点击首页的“服务接入申请”进入服务申请页面,线上填写《第三方服务接入申请》,并遵守《第三方服务接入协议》。提交后进入API提交页


第二步:提交API

进入API提交页面,填写 API的基本资料,配额设置及自定义计费方式。


第三步:提交SDK

上传xml文件或自编sdkzip包,完成服务提交,提交后您就可以通过APIBUS平台开发调试SDK,并由系统自动生成以下内容:

1.多平台sdk(PHP,JAVA,Python)

2.服务文档及测试控制台

3.黑盒测试用例


第四步:文档完善

如果上传xml可下载自动生成的sdk文件进行调试。对提交的API进行方法说明和用例说明的完善,方便使用者更快的学习使用服务。


第五步:服务发布

进入服务接入申请的最后一步页面,再次确认服务信息后点击“提交服务发布”按钮进行提交。审核发布后即完成整个接入流程。

服务商店工作人员在3 个工作日内,完成服务文档、SDK 线上部署工作。

成功上线后给您发送邮件通知。 此时服务商店平台开发者,可以在扩展服务列表中查看到该服务,服务商店会提醒开发者此服务处于发布阶段。

到此,您就完成了一个服务在APIBUS服务平台的接入。


申请接入服务需要提供以下基本信息:

  • 服务信息:服务相关资料。
  • 服务提供方信息

在提交API时需要提供API相关信息:

  • API资料。
  • 配额设定
  • 计费设定

提交SDK时,可以填入简单的API说明和示例,方便生成说明文档和实例。

展开导航<<
如有意向,请与我们联系