




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何开发api接口1PHP接口开发签名验证原理详解2使用php定义自己的API接口5Api接口文档范例6Web Service 的工作原理13RESTful API 设计最佳实践17如何开发api接口API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API 函数包含在Windows系统目录下的动态连接库文件中。Windows API是一套用来控制Windows的各个部件的外观和行为的预先定义的Windows函数。用户的每个动作都会引发一个或几个函数的运行以告诉 Windows发生了什么。这在某种程度上很像Windows的天然代码。而其他的语言只是提供一种能自动而且更容易的访问API的方法。当你点击窗体上 的一个按钮时,Windows会发送一个消息给窗体,VB获取这个调用并经过分析后生成一个特定事件。更易理解来说:Windows系统除了协调 应用程序的执行、内存的分配、系统资源的管理外,同时他也是一个很大的服务中心。调用这个服务中心的各种服务(每一种服务就是一个函数)可以帮助应用程序 达到开启视窗、描绘图形和使用周边设备等目的,由于这些函数服务的对象是应用程序,所以称之为Application Programming Interface,简称API 函数。WIN32 API也就是MicrosoftWindows 32位平台的应用程序编程接口。凡是在 Windows工作环境底下执行的应用程序,都可以调用Windows API。linux API在 linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准-POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发 的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口API,用于保证应用程序可以在源程序一级上在多种操作系统上移 植运行。这些系统调用编程接口主要是通过C库(LIBC)来实现的。2开放平台基于互联网的应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给开发者来调用。对外提供的API 调用使得站点之间的内容关联性更强,同时这些开放的平台也为用户、开发者和中小网站带来了更大的价值。开放是目前的发展趋势,越来越多的产品走向开放。目前的网站不能靠限制用户离开来留住用户,开放的架构反而更增加了用户的粘性。在Web 2.0的浪潮到来之前,开放的API 甚至源代码主要体现在桌面应用上,而现在越来越多的Web应用面向开发者开放了API。具备分享、标准、去中心化、开放、模块化的Web 2.0站点,在为使用者带来价值的同时,更希望通过开放的API 来让站点提供的服务拥有更大的用户群和服务访问数量。站点在推出基于开放API 标准的产品和服务后,无需花费力气做大量的市场推广,只要提供的服务或应用出色易用,其他站点就会主动将开放API 提供的服务整合到自己的应用之中。同时,这种整合API 带来的服务应用,也会激发更多富有创意的应用产生。为了对外提供统一的API 接口,需要对开发者开放资源调用API 的站点提供开放统一的API接口环境,来帮助使用者访问站点的功能和资源。当然,开放API 的站点为第三方的开发者提供良好的社区支持也是很有意义的,这有助于吸引更多的技术人员参与到开放的开发平台中,并开发出更为有趣的第三方应用。视频云技术提供商CC视频开放API接口,用户可以在自己的网站后台轻松完成视频的上传、视频播放控制操作,并可批量获取视频及平台信息。正 如在什么是API中所说,API函数包含在位于系统目录下的DLL文件中。你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用 API Text Viewer。 要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32api.txt或MDB。如果你已经把它转换成了数据库的话,这样可以加快速度。 使用预定义的常量和类型也是同样的方法。 API除了有应用“应用程序接口”的意思外,还特指API的说明文档,也称为帮助文档。假设你想在你的窗体模块中声明一个函数,粘贴然后运 行,VB会告诉你:编译错误.Declare 语句不允许作为类或对象模块中的Public(公共的) 成员。.看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(私有的)。不要忘了,可是这将使该函数只在该窗体模块可用。. 在有些情况下,你会得到不明确的名称这样的提示,这是因为函数、常量或其他的什么东西共用了一个名称。由于绝大多数的函数都进行了别名化,亦即意味着 你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行。远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。当 前应用于 API 的标准包括ANSI 标准SQL API。另外还有一些应用于其它类型的标准尚在制定之中。API 可以应用于所有计算机平台和操作系统。这些API 以不同的格式连接数据。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需 的知识以外,这些类型的API 还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种API 只处理一种信息格式,所以该情形下的信息交付API 只提供较小的命令、网络参数以及差错条件子集。正因为如此,交付API 方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付API 类型是比较理想的选择。API 接口属于一种操作系统或程序接口,GUI接口属于一种图形操作系统。两者都属于直接用户接口。有时公司会将 API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代 码,该接口标准被称之为开放式API。PHP接口开发签名验证原理详解接口签名现在在应用开发中我们通常会用到了,像做支付接口时就必须要用到接口签名了,我们下面来看一个简单的在app应用中的接口签名实现原理了.接口开发是各系统之间对接的重要方式,其数据是通过开放的互联网传输,对数据的安全性要有一定要求,为了提高传输过程参数的防篡改性,签名sign的方式是目前比较常用的方式.我这里介绍一种方式,是目前国内互联网公司常用的一种方式,其中淘宝的支付宝支付接口、淘宝开放平台接口、腾讯开放平台等应用的一种方式.一、签名参数sign生成的方法第1步:将所有参数(注意是所有参数),除去sign本身,以及值是空的参数,按参数名字母升序排序.第2步: 然后把排序后的参数按参数1值1参数2值2参数n值n(这里的参数和值必须是传输参数的原始值,不能是经过处理的,如不能将"转成”后再拼接)的方式拼接成一个字符串。第3步: 把分配给接入方的验证密钥key拼接在第2步得到的字符串前面。第2步: 在上一步得到的字符串前面加上验证密钥key(这里的密钥key是接口提供方分配给接口接入方的),然后计算md5值,得到32位字符串,然后转成大写.第4步: 计算第3步字符串的md5值(32位),然后转成大写,得到的字符串作为sign的值。举例:假设传输的数据是/interface.php?sign=sign_value&p2=v2& p1=v1&method=cancel&p3=&pn=vn(实际情况最好是通过post方式发送),其中sign参数对应的sign_value就是签名的值。第一步,拼接字符串,首先去除sign参数本身,然后去除值是空的参数p3,剩下p2=v2&p1=v1& method=cancel& amp;pn=vn,然后按参数名字符升序排序,method=cancel&p1=v1&p2=v2&pn=vn.第二步,然后做参数名和值的拼接,最后得到methodcancelp1v1p2v2pnvn第三步,在上面拼接得到的字符串前加上验证密钥key,我们假设是abc,得到新的字符串abcmethodcancelp1v1p2v2pnvn第四步,然后将这个字符串进行md5计算,假设得到的是abcdef,然后转为大写,得到ABCDEF这个值即为sign签名值。注意,计算md5之前请确保接口与接入方的字符串编码一致,如统一使用utf-8编码或者GBK编码,如果编码方式不一致则计算出来的签名会校验失败。二、签名验证方法:根据前面描述的签名参数sign生成的方法规则,计算得到参数的签名值,和参数中通知过来的sign对应的参数值进行对比,如果是一致的,那么就校验通过,如果不一致,说明参数被修改过.例子,代码如下:1. setKey($aeskey);13. /解密AES密文14. $plaintext=$aes-decrypt(base64_decode($crypttext);15. echo$plaintext;16. echo;17. /AES加密明文18. /echo$aes-encrypt($plaintext);19. /rsa公钥20. $publickey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCffOeIVYut9jW5w1L5uKX4aDvd837a8JhaWm5S8YqNQfgEmfD9T+rDknXLqMT+DXeQAqGo4hBmcbej1aoMzn6hIJHk3/TfTAToNN8fgwDotHewsTCBbVkQWtDTby3GouWToVsRi1i/A0Vfb0+xM8MnF46DdhhrnZrycERBSbyrcwIDAQAB;21. /echobase64_decode($publickey);22. /rsa签名23. $signature=XHin4uUFqrKDEhKBD/hQisXLFFSxM6EZCvCPqnWCQJq3uEp3ayxmFuUgVE0Xoh4AIWjIIsOWdnaToL1bXvAFKwjCtXnkaRwUpvWrk+Q0eqwsoAdywsVQDEceG5stas1CkPtrznAIW2eBGXCWspOj+aumEAcPyYDxLhDN646Krzw=;24. /echobase64_decode($signature);25. $rsa=newCrypt_RSA();26. /设置RSA签名模式CRYPT_RSA_SIGNATURE_PSSorCRYPT_RSA_SIGNATURE_PKCS127. $rsa-setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);28. /var_dump($rsa-createKey();29. /生成RSA公钥、私钥30. /extract($rsa-createKey();31. /使用RSA私钥生成签名32. /$rsa-loadKey($privatekey);33. /$signature=$rsa-sign($plaintext);34. /使用RSA公钥验证签名35. echo$plaintext;36. $rsa-loadKey(base64_decode($publickey);37. echo$rsa-verify($plaintext,base64_decode($signature)?verified:unverified;/38. echo;39. /生成RSA公钥、私钥40. /var_dump($rsa-createKey();41. extract($rsa-createKey();42. /使用RSA私钥加密数据43. $rsa-loadKey($privatekey);44. $ciphertext=$rsa-encrypt($plaintext);45. /使用RSA公钥解密数据46. $rsa-loadKey($publickey);47. echo$rsa-decrypt($ciphertext);48. ?使用php定义自己的API接口下面是使用php访问数据库并定义API接口以供其他应用调用的代码: 下面是json.php的代码: 1000) die(possible deep recursion attack); foreach ($array as $key = $value) if (is_array($value) arrayRecursive($array$key, $function, $apply_to_keys_also); else $array$key = $function($value); if ($apply_to_keys_also & is_string($key) $new_key = $function($key); if ($new_key != $key) $array$new_key = $array$key; unset($array$key); Api接口文档范例成都世纪东方 API 接口规范文档更新内容:2009-05-12 Whois 查询增加注册信息显示 2009-04-24 增加域名修改信息接口 2008-11-24 增加域名 Whois 信息查询 2008-11-24 正式启用API接口说明:API支持GET/POST方式,建议使用 POST 方式。所有POST数据必须使用 UTF-8 编码对数据进行 URLEncode除获取服务器时间外的其他接口,每次请求都需要进行身份验证。建议使用获取服务器时间接口来获得 vtime 值。1、获取服务器时间接口URL地址:/api-get-time.html返回信息:20080723153933返回信息说明:time 值:14位时间值,用于身份验证的14位时间戳2、身份验证方法URL地址:参见下列接口 URL 地址参数:username用户名vtime14位时间戳checksum验证字串 = MD5(username + MD5(用户密码) + vtime)2、域名查询接口GET/POST地址:/api-product-domain-query.html参数:domain域名,如: ,123.com,domain.cc 多个域名使用逗号间隔正常返回信息:200可以注册123.com201不可注册domain.cc433查询失败domain.aaa500错误的域名异常返回信息: 返回参数说明:return_code返回状态代码,成功 = 200return_msg返回详细提示信息domain = 域名status = 域名查询状态代码200 = 可以注册201 = 不可注册433 = 查询失败500 = 错误的域名msg = 详细说明2、域名注册接口GET/POST地址:/api-product-domain-buy.html参数:domain域名,如: year注册年限(1-5)年dns1主要DNS服务器dns2备用DNS服务器dom_cn域名所有者(中文)成都世纪东方网络通信有限公司fn_cn姓(中文)小ln_cn名(中文)明country_cn国家代码(中文)中国provinces_cn省份(中文)四川city_cn城市(中文)成都address_cn地址(中文)成都市XXXdom_en域名所有者(英文)Oriental Centuryfn_en姓(英文)Xiaoln_en名(英文)Mingcountry_en国家代码(英文)CNprovinces_en省份(英文)Sichuancity_en城市(英文)Chengduaddress_en地址(英文)Chengdu Citypostcode邮政编码610041tel电话号码+86.02882001809fax传真号码+86.02882001809email电子邮件正常返回信息:异常返回信息: 返回参数说明:return_code返回状态代码,成功 = 200return_msg返回详细提示信息3、域名续费接口GET/POST地址:/api-product-domain-renew.html参数:domain域名,如: year续费年限(1-5)年expiredate域名当前过期日期,如:2008-01-01正常返回信息:异常返回信息: 返回参数说明:return_code返回状态代码,成功 = 200return_msg返回详细提示信息4、获取域名信息接口GET/POST地址:/api-product-domain-view.html参数:domain域名,如: 正常返回信息:异常返回信息: 返回参数说明:return_code返回状态代码,成功 = 200return_msg返回详细提示信息domain域名password域名密码buydate注册日期expiredate过期日期dns1主要DNS服务器dns2备用DNS服务器dom_cn域名所有者(中文)成都世纪东方网络通信有限公司fn_cn姓(中文)小ln_cn名(中文)明country_cn国家代码(中文)中国provinces_cn省份(中文)四川city_cn城市(中文)成都address_cn地址(中文)成都市XXXdom_en域名所有者(英文)Oriental Centuryfn_en姓(英文)Xiaoln_en名(英文)Mingcountry_en国家代码(英文)CNprovinces_en省份(英文)Sichuancity_en城市(英文)Chengduaddress_en地址(英文)Chengdu Citypostcode邮政编码610041tel电话号码+86.02882001809fax传真号码+86.02882001809email电子邮件5、域名修改DNS接口GET/POST地址:/api-product-domain-dns.html参数:domain域名,如: dns1主要DNS服务器地址,如:dns2备用DNS服务器地址,如:正常返回信息:异常返回信息: 返回参数说明:return_code返回状态代码,成功 = 200return_msg返回详细提示信息6、获取域名 Whois 信息接口GET/POST地址:/api-product-domain-whois.html参数:domain域名,如: 正常返回信息:异常返回信息: 返回参数说明:return_code返回状态代码,成功 = 200return_msg返回详细提示信息whoisWhois 信息7、域名修改信息接口GET/POST地址:/api-product-domain-info.html参数:domain域名,如: fn_cn姓(中文)小ln_cn名(中文)明country_cn国家代码(中文)中国provinces_cn省份(中文)四川city_cn城市(中文)成都address_cn地址(中文)成都市XXXfn_en姓(英文)Xiaoln_en名(英文)Mingcountry_en国家代码(英文)CNprovinces_en省份(英文)Sichuancity_en城市(英文)Chengduaddress_en地址(英文)Chengdu Citypostcode邮政编码610041tel电话号码+86.02882001809fax传真号码+86.02882001809email电子邮件正常返回信息:异常返回信息: 返回参数说明:return_code返回状态代码,成功 = 200return_msg返回详细提示信息=ASP例子:Web Service 的工作原理Web Service基本概念Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在 Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的 调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服 务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览 以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。调用原理:Web服务有两层含义:1、是指封装成单个实体并发布到网络上的功能集合体;2、是指功能集合体被调用后所提供的服务。简单地讲,Web服务是一个URL资源,客户端可以通过编程方式请求得到它的服务,而不需要知道所请求的服务是怎样实现的,这一点与传统的分布式组件对象模型不同。Web服务的体系结构是基于Web服务提供者、Web服务请求者、Web服务中介者三个角色和发布、发现、绑定三个动作构建的。简单地说,Web服务提供者就是Web服务的拥有者,它耐心等待为其他服务和用户提供自己已有的功能;Web服务请求者就是Web服务功能的使用者,它利用SOAP消息向Web服务提供者发送请求以获得服务;Web服务中介者的作用是把一个Web服务请求者与合适的Web服务提供者联系在一起,它充当管理者的角色,一般是UDDI。这三个角色是根据逻辑关系划分的,在实际应用中,角色之间很可能有交叉:一个Web服务既可以是Web服务提供者,也可以是Web服务请求者,或者二者兼而有之。显示了Web服务角色之间的关系:其中,“发布”是为了让用户或其他服务知道某个Web服务的存在和相关信息;“查找(发现)”是为了找到合适的Web服务;“绑定”则是在提供者与请求者之间建立某种联系。图2-1Web service的体系结构实现一个完整的Web服务包括以下步骤:Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册;(发布)Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务;(发现)Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;(发现) 利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;(绑定)Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。(绑定)调用方式:1.Net下采用GET/POST/SOAP方式动态调用WebServi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- TWEETER公司管理学案例分析
- 财务会计学培训教案(一)
- 设备维修工作年终总结
- 从职业规划生涯发展报告看未来职场趋势与就业机会
- 2024-2025学年下学期高二生物沪科版期末必刷常考题之生态系统的结构与功能
- 建筑施工特种作业-建筑起重机械司机(施工升降机)真题库-1
- 建筑施工特种作业-建筑架子工(普通脚手架)真题库-9
- 山东中考传奇题目及答案
- 瑞士银行招聘题目及答案
- 03《相互作用》-2025高中物理水平合格考备考知识清单+习题巩固
- 人工挖孔桩 安全技术交底
- (新版)供电可靠性理论考试题库大全-下(填空题)
- 《护理人际沟通》全套教学课件
- 某冶金机械厂供配电系统设计
- 收费站年度工作计划
- xx县精神病医院建设项目可行性研究报告
- 《在中亚细亚草原上》赏析 课件
- 城市轨道交通供电技术442页完整版教学课件汇总全书电子教案
- Q/GDW248-2008输变电工程建设标准强制性条文实施管理规程第3部分:变电站建筑工程施工教程文件
- 班组会议运作技巧ppt课件
- 技术比武理论复习题(继电保护)
评论
0/150
提交评论