历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2018年01月07日 | 如何搭建API程序_框架api接口规范

2018-01-07 来源:电子发烧友网

1、基于互联网的应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给开发者来调用。对外提供的API 调用使得站点之间的内容关联性更强,同时这些开放的平台也为用户、开发者和中小网站带来了更大的价值。

开放是目前的发展趋势,越来越多的产品走向开放。目前的网站不能靠限制用户离开来留住用户,开放的架构反而更增加了用户的粘性。在Web 2.0的浪潮到来之前,开放的API 甚至源代码主要体现在桌面应用上,而现在越来越多的Web应用面向开发者开放了API。

具备分享、标准、去中心化、开放、模块化的Web 2.0站点,在为使用者带来价值的同时,更希望通过开放的API 来让站点提供的服务拥有更大的用户群和服务访问数量。

站点在推出基于开放API 标准的产品和服务后,无需花费力气做大量的市场推广,只要提供的服务或应用出色易用,其他站点就会主动将开放API 提供的服务整合到自己的应用之中。同时,这种整合API 带来的服务应用,也会激发更多富有创意的应用产生。

为了对外提供统一的API 接口,需要对开发者开放资源调用API 的站点提供开放统一的API接口环境,来帮助使用者访问站点的功能和资源。

当然,开放API 的站点为第三方的开发者提供良好的社区支持也是很有意义的,这有助于吸引更多的技术人员参与到开放的开发平台中,并开发出更为有趣的第三方应用。

视频云技术提供商CC视频开放API接口,用户可以在自己的网站后台轻松完成视频的上传、视频播放控制操作,并可批量获取视频及平台信息。

2、先做好一个备案域名,最好正规的备案公司备案。

3、选择一家服务器租用,最好用阿里云、中网等牌子稍大的服务器

4、系统程序构建与架设,搭建在独立的服务器上,保证服务质量。

5、锋锐程序:

1、人性化界面,科学严谨,简洁易用的操作流程和管理界面。

2、智能通道接入

程序整合了市面上几十种常用的收费方式,输入自己的ID和密钥就可以开通,不懂技术也可以轻松搞定。

3、优势全方位通道

公司和全国多家sp、卡类、网银类等多种支付方式的优秀公司保持良好的合作关系,可以拿到市面上的几乎所有支付渠道并可以给客户 争取最高的价格优势。

4、超强安全性

设置商户密钥,支付信息加密传递,加强支付安全性,加密系统与其他支付平台兼容性优秀。

5、完善的后台管理

通过后台管理系统,方便查询定单管理、定单统计、财务管理、用户资料修改、商户密钥设置、推荐用户及用户支付金额、商户所得金 自定义订单号、支付日期、结帐信息等功能。

6、优秀的负载能力

系统实现非常优秀的负载能力。还支持无限服务器扩展,一旦业务发展,只需增加投放服务器即可完成系统投放能力扩展。

其程序功能强大,实用性强,支持任何网站接口程序,api接口程序

框架api接口规范

一、入参规范:

1.分页相关参数约定:2.需要返回的数据格式:

通过参数data_type 获取特定的响应数据格式,可以是json(默认)、xml、jsonp、或js。

3.接口校验:

所有接口都带参数token(32位),初期可以先两边写死进行校验。

4.jsonp:

当需要返回jsonp时,向接口传入参数名为cback,即http请求中带参数cback=回调函数,注意回调函数中不允许有特殊字符,即需要过滤特殊字符,只允许为纯字母格式或下划线组成的格式,且最大长度不能超过20。

注意:当data_type为jsonp且不传cback的值时,系统默认会返回一个回调函数,函数名为def_func。

范例url:

http://mycatkin.com/auth/login/data_type/jsonp/p/1/ps/10/cback/myfunc/token/DJAQ21J574DKLJJ324JIQ9OKJSLDJVN21.json
#e#

二、出参规范:

1.查询:

返回参数统一按如下接口形式,其中cnt为ad在数据库中的总数目,如下面数据,ad下的list总数为2,area下的list总数为3。当接口有错误返回时,code大于1,且msg中含有错误信息,当无错误时,code为1,且msg为空。

当接口传入当前页参数p ,当前页数据条数ps时,接口返回时,同样也会反给客户端p与ps参数。

如果有极端情况,即同一接口返回多个list,则接口分页入参定义为“p+下划线+当前list的下标”,如下接口,ad下的list中,当前页的输入参数为p_ad,ad的每页条数输入参数为ps_ad,即post或get中分页参数为p_ad=1&ps_ad=20&p_area=1&ps_area=20

cnt不是当前list返回的条数,而是数据库中,该list的总条数,用于分页。

json格式示例:

{

“code”:1,

“msg”:“”,

“ad”:{

“cnt”:22,

“p”:2,

“ps”:20,

“list”:[{

“adv_TItle”:“\u8fd9\u662f\u5e7f\u544a\u6807\u98981”,

“adv_link”:“m.xxxxxx.cn\/advert\/tbsync\/”,

“open_target”:“2”,

“img_url”:“www.xxxxxx.cn\\\/data\\\/upload\\\/shop\\\/adv\\\/04825861373036910.png?imageView2/2/w/550”

},

{

“adv_TItle”:“\u8fd9\u662f\u5e7f\u544a\u6807\u98982”,

“adv_link”:“m.xxxxxx.cn\\\/advert\\\/newerDerate\\\/?430”,

“open_target”:“2”,

“img_url”:“www.xxxxxx.cn\\\/data\\\/upload\\\/shop\\\/adv\\\/04782825931526321.png?imageView2/2/w/550”

}

},

“area”:{

“cnt”:3,

“p”:1,

“ps”:20,

“list”:[{

“c_area_id”:“16”,“c_area_name”:“\u6df1\u5733”,

“c_area_pic”:“04732773115385188.jpg?imageView2/2/w/550”,

“english_name”:“shenzhen”,“goodsCount”:“21”,

“img_url”:“www.xxxxxx.cn\\\/data\\\/upload\\\/shop\\\/adv\\\/04825861373036910.png?imageView2/2/w/550”

},

{

“c_area_id”:“18”,

“c_area_name”:“\u6e56\u5357”,

“c_area_pic”:“04732773115385188.jpg?imageView2/2/w/550”,

“english_name”:“hunan”,

“goodsCount”:“33”,

“img_url”:“www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png?imageView2/2/w/550”

},

{

“c_area_id”:“2”,

“c_area_name”:“\u5317\u4eac”,

“c_area_pic”:“04732773115385188.jpg?imageView2/2/w/550”,

“english_name”:“beijing”,“goodsCount”:“70”,

“img_url”:“www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png?imageView2/2/w/550”

}

},

“goods_info”:{

“cnt”:1,

“p”:1,

“ps”:20,

“list”:[{

“goods_id”:“211”,

“goods_name”:“\u5927\u4fdd\u5065\u5305\u591c”,

“goods_price”:“1000.00”,

“main_image”:“www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png?imageView2/2/w/550”

}]

}

}

以php为示例,其中php中数组拼接格式为:

$array_data = array(

“code” =》 1,

“msg” =》 ‘’,

“ad” =》 array(

“cnt” =》 22,

“p” =》 2,

“ps” =》 20,

“list” =》 array(

0 =》 array(

“adv_TItle” =》 “这是广告标题1”,

“adv_link” =》 “m.xxxxxx.cn/advert/tbsync/”,

“open_target” =》 “2”,

“img_url” =》 “www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png?imageView2/2/w/550”

),

1 =》 array(

“adv_TItle” =》 “这是广告标题2”,

“adv_link” =》 “m.xxxxxx.cn\/advert\/newerDerate\/?430”,

“open_target” =》 “2”,

“img_url” =》 “www.xxxxxx.cn\/data\/upload\/shop\/adv\/04782825931526321.png?imageView2/2/w/550”

),

“area” =》 array(

“cnt” =》 3,

“p” =》 1,

“ps” =》 20,

“list” =》 array(

0 =》 array(

“c_area_id” =》 “16”,

“c_area_name” =》 “深圳”,

“c_area_pic” =》 “04732773115385188.jpg?imageView2/2/w/550”,

“english_name” =》 “shenzhen”,

“goodsCount” =》 “21”,

“img_url” =》 “www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png?imageView2/2/w/550”

),

1 =》 array(

“c_area_id” =》 “18”,

“c_area_name” =》 “湖南”,

“c_area_pic” =》 “04732773115385188.jpg?imageView2/2/w/550”,

“english_name” =》 “hunan”,

“goodsCount” =》 “33”,

“img_url” =》 “www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png?imageView2/2/w/550”

),

2 =》 array(

“c_area_id” =》 “2”,

“c_area_name” =》 “北京”,

“c_area_pic” =》 “04732773115385188.jpg?imageView2/2/w/550”,

“english_name” =》 “beijing”,

“goodsCount” =》 “70”,

“img_url” =》 “www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png?imageView2/2/w/550”

),

),

“goods_info” =》 array(

“cnt” =》 1,

“p” =》 1,

“ps” =》 20,

“list” =》 array(

0 =》 array(

“goods_id” =》 “211”,

“goods_name” =》 “大保健包夜”,

“goods_price” =》 “1000.00”,

“main_image” =》 “www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png?imageView2/2/w/550”

);

接口尽量按一个页面一个接口,但是公用的一些接口信息,如地区分类信息等,做单独接口处理,但是结果参数规范,按照上面数据格式返回数据。

返回的xml数据格式,如下:

《?xml version=“1.0” encoding=“utf-8”?》

《data》

《code》1《/code》

《msg/》

《ad》

《cnt》22《/cnt》

《p》2《/p》

《ps》20《/ps》

《list》

《article》

《advtitle》这是广告标题1《/advtitle》

《advlink》m.xxxxxx.cn/advert/tbsync/《/advlink》

《opentarget》2《/opentarget》

《imgurl》www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png?imageView2/2/w/550《/imgurl》

《/article》

《article》

《advtitle》这是广告标题2《/advtitle》

《advlink》m.xxxxxx.cn\/advert\/newerDerate\/?430《/advlink》

《opentarget》2《/opentarget》

《imgurl》www.xxxxxx.cn\/data\/upload\/shop\/adv\/04782825931526321.png?imageView2/2/w/550《/imgurl》

《/article》

《/list》

《/ad》

《area》

《cnt》3《/cnt》

《p》1《/p》

《ps》20《/ps》

《list》

《article》

《careaid》16《/careaid》

《careaname》深圳《/careaname》

《careapic》04732773115385188.jpg?imageView2/2/w/550《/careapic》

《englishname》shenzhen《/englishname》

《goodsCount》21《/goodsCount》

《imgurl》www.xxxxxx.cn\/data\/upload\/shop\/adv\/04825861373036910.png?imageView2/2/w/550《/imgurl》

《/article》

《article》

《careaid》18《/careaid》

《careaname》湖南《/careaname》

《careapic》04732773115385188.jpg?imageView2/2/w/550《/careapic》

《englishname》hunan《/englishname》

《goodsCount》33《/goodsCount》

《imgurl》www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png?imageView2/2/w/550《/imgurl》

《/article》

《article》

《careaid》2《/careaid》

《careaname》北京《/careaname》

《careapic》04732773115385188.jpg?imageView2/2/w/550《/careapic》

《englishname》beijing《/englishname》

《goodsCount》70《/goodsCount》

《imgurl》www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png?imageView2/2/w/550《/imgurl》

《/article》

《/list》

《/area》

《goodsinfo》

《cnt》1《/cnt》

《p》1《/p》

《ps》20《/ps》

《list》

《article》

《goodsid》211《/goodsid》

《goodsname》大保健包夜《/goodsname》

《goodsprice》1000.00《/goodsprice》

《mainimage》www.xxxxxx.cn/data/upload/shop/adv/04825861373036910.png?imageView2/2/w/550《/mainimage》

《/article》

《/list》

《/goodsinfo》

《/data》

其中list中的数字下标用article代替,附php版本自定义的递归数组转xml函数:

function ArrtoXml($data, $rootNodeName = ‘data’, $xml=null)

{

// turn off compatibility mode as simple xml throws a wobbly if you don‘t.

if (ini_get(’zend.ze1_compatibility_mode‘) == 1)

{

ini_set (’zend.ze1_compatibility_mode‘, 0);

}

if ($xml == null)

{

$xml = simplexml_load_string(“《?xml version=’1.0‘ encoding=’utf-8‘?》《$rootNodeName /》”);

}

// loop through the data passed in.

foreach($data as $key =》 $value)

{

// no numeric keys in our xml please!

if (is_numeric($key))

{

// make string key.。.

$key = “article”。 (string) $key;

}

// replace anything not alpha numeric

$key = preg_replace(’/[^a-z]/i‘, ’‘, $key);

// if there is another array found recrusively call this function

if (is_array($value))

{

$node = $xml-》addChild($key);

// recrusive call.

ArrtoXml($value, $rootNodeName, $node);

}

else

{

// add single node.

$value = htmlentities($value);

$xml-》addChild($key,$value);

}

}

// pass back as string. or simple xml object if you want!

return $xml-》asXML();

}

注意事项:

当返回js时,即data_type=js,在json串前加入 RESULT=,即格式为RESULT={json串}。

当返回html时,即data_type=html,在返回的字符串中加入html头部,即DOCTYPE、HEAD、BODY等信息。

2.添加,修改,删除

当调用增删改数据接口时,code为1时表操作成功,当code大于1时,表示操作失败,并在msg中返回错误信息,如下:

{

“code”:101,

“msg”:“操作参数丢失!”

}

当然,若增删改后仍然需要返回响应数据,格式同查询。

推荐阅读

史海拾趣

DYMO公司的发展小趣事

近年来,DYMO公司越来越注重环保和可持续发展。公司采用环保材料制造产品,并推广循环使用和回收计划。此外,DYMO公司还积极参与各种环保活动,致力于减少生产过程中的碳排放和废弃物排放。这些举措不仅提高了DYMO公司的社会形象,也为其未来的发展奠定了更加坚实的基础。

DL Instruments LLC公司的发展小趣事

随着产品的不断推出和市场的逐步认可,DL Instruments开始积极拓展其市场份额。公司不仅在美国本土市场取得了良好的业绩,还逐渐将产品推向国际市场。通过多年的努力,DL Instruments在电子行业中建立了良好的品牌形象,成为精密仪器制造领域的佼佼者。

DECON公司的发展小趣事

DECON公司成立于电子行业的蓬勃发展时期,初创期便专注于研发和生产高质量的电子连接器产品。通过对市场的深入调研和技术创新,公司成功定位自己在高端连接器市场的位置,并凭借其出色的产品质量和稳定的性能,逐步在市场中树立了良好的口碑。

Advanced Pressure Technology公司的发展小趣事

随着技术的不断进步和市场的不断扩大,APT公司的产品逐渐应用于半导体制造和其他清洁行业,如太阳能电池板、LCD、LED、平板显示器等。2000年,APT公司决定创建高纯度产品系列,并成功推出了HP特种气体应用和AK产品线。这一举措不仅进一步丰富了APT公司的产品线,也使其能够更好地满足高端市场的需求。此后,APT公司不断拓展其市场版图,产品远销全球各地,赢得了广泛的客户认可。

Directed Energy Inc公司的发展小趣事

Directed Energy Inc公司自创立之初,就致力于在电子行业中推动技术创新。公司投入大量研发资源,开发出一系列高性能的脉冲式激光二极管驱动器和高压脉冲模块,这些产品凭借其卓越的性能和稳定性,迅速在市场上获得了认可。随着技术的不断迭代和升级,Directed Energy Inc逐渐在电子行业中树立了技术领先的形象,吸引了众多行业内的设计师和工程师的关注。

BusBoard公司的发展小趣事

在竞争激烈的电子行业,技术创新是企业生存发展的关键。BusBoard公司深知这一点,因此不断加大研发投入,引进高端人才,推动技术创新。一次偶然的机会,公司研发团队发现了一种新型材料,可以显著提高电路板的性能和稳定性。经过反复试验和优化,这一技术突破最终转化为实际产品,并成功推向市场。这一创新不仅提升了BusBoard公司的竞争力,也为客户带来了更优质的产品体验。

问答坊 | AI 解惑

自制USB转串口下载线

如题,小弟刚刚学习单片机,但本本上没有串口,烧写程序的时很不方便,自己去电脑城买个个便宜的还不能用,有人建议自制,烦请哪位大侠指点怎么样制作,都是需要什么元件?…

查看全部问答>

如何挑选液晶电视

家电卖场,最吸引人的地方莫过于摆满了平面电视的展示墙,各家厂商展示炫丽画面的机种,往往是让挑选电视的使用者手足无措,尤其在这个液晶电视的战国时代里,要怎么挑到一台合乎自己要求的机种,可是一门相当大的学问呢,在这里我们就来跟各位介绍 ...…

查看全部问答>

袖珍FM自动选台调谐收音机的制作

本文介绍的袖珍FM电脑选台收音机采用飞利浦公司开发生产的TDA7088T集成块,采用16脚双列扁平封装,工作电压为3V,该电路除包含FM收音机从天线接收到鉴频输出音频信号的全部功能外,还设有搜索调谐电路、信号检测电路、静噪电路以及压缩中频频偏的频 ...…

查看全部问答>

LED产业蓬勃发展 PCB行业迎来新契机

世博、亚运、“十城万盏”政策推进,LED市场需求大增。据广东省LED产业联盟负责人介绍,我国户外照明市场率先启动,带动产业快速发展。科技部开展的“十城万盏”工程标志着国内LED产业迎来第三次快速发展机遇,仅我国城市道路照明替换成LED路灯带来 ...…

查看全部问答>

PCI驱动相关 (分层驱动)

请教各位大虾:本人刚接触驱动开发,目前需要写一个PCI驱动加一个串口驱动 PCI驱动目前已经能正确获取基址,但是怎么加串口驱动比较合理? 1.可不可以通过一个驱动程序在AddDevice函数中通过IoCreateDevice来创建2个设备(PCI和COM),相当于2个驱动合在 ...…

查看全部问答>

咨询看门狗问题

请问一下看门狗复位时间和输出复位时间有什么区别,本人新手,谢谢…

查看全部问答>

CE手机获取信号强度??

程序要全屏,为了好看,用了追击的信号的图片和电量强度的图片。。 电量强度的API现在有了GetSystemPowerStatusEx 信号强度的API呢??? 麻烦大家了哦,找了半天没找到,只是有人说注册表中有,还有的说,向手机模块的某个端口发AT指令来获取。 ...…

查看全部问答>

谁能帮忙解释一下 USB Cable-Based Association Framework CBAF 这个名词呢?

大侠帮忙! 谁能帮忙解释一下 USB Cable-Based Association Framework CBAF 这个名词呢? 谢谢!…

查看全部问答>

关于映像的问题

刚刚接触vxworks,向大家请教几个基础问题,不要见笑哈 1,bootable格式的映像文件包含那些内容?是不是包括了bsp,vxworks操作系统文件和自己编写的应用程序三部分,加电后自己可以运行到应用程序? 2.downloadable格式的映像文件是不是不包括vx ...…

查看全部问答>

受到“位带别名区“启发,STM32F103.H头文件计划。

受到“位带别名区“启发,STM32F103.H头文件计划。现在已经使用STM32F103.H头文,基本代替了STM32库,直接使用寄存器和位结构。现在受到“位带别名区“启发,把STM32 外设寄存器全部加上“位带别名区“定义。每个比特膨胀成一个32  ...…

查看全部问答>