设为首页 收藏本站
查看: 688|回复: 0

[经验分享] PHP与API讲解(一)

[复制链接]

尚未签到

发表于 2017-12-30 18:36:41 | 显示全部楼层 |阅读模式
  了解API
在使用与创建自己的API之前我们需要先了解什么是API!

API代表应用程序编程接口,而接口指的是一个特定的服务、一个应用程序或者其他程序的公共模块。

理解SOA(面向服务的架构):SOA是PHP应用程序日益普及的方法,它是基于一个服务层的系统,提供系统所需要的所有功能,但这个功能提供的是应用层,并未连接到表现层。这样,多种系统就可以使用这个相同的模块化、可重复使用的功能了。(备注:在学习API的时候看过的两本有关API的书籍都有提到这个SOA,但是由于自己还是个菜鸟所以对这个理解不太深。所以对于以上SOA的含义摘抄于PHP精粹-编写高效PHP代码(美))

在使用api是涉及到一个重要的问题是传输的数据格式:在API数据传输中主要使用XML与Json数据格式。在这就不对这两个数据格式展开讲解了。

使用的协议时HTTP超文本传输协议。所谓的访问API简单的来说就是客户端通过HTTP来访问服务器已定义好的程序,再进一步理解就是使用编程代码通过HTTP请求API获得自己所需要的数据。看如下简单过程图:

DSC0000.jpg


理解服务类型:
  RPC:即Remote ProcedureCall远程调用过程,RPC服务也就是调用远程的函数并返回需要的数据(大多数时候需要传入参数,视API而定)。RPC主要分为XML-RPC和Json-             RPC。
  SOAP:即Simple Object Access Protocol简单对象访问协议,SOAP是严格定义的XML-RPC。我们通常使用WSDL(Web服务描述语言)文档描述SOAP服务(即描述服务所            提供的方法地址等等的信息)。在很多语言中包括PHP都有内置的类库,可以很容易就可以处理SOAP,创建与使用SOAP服务。
  REST:REST不是一个协议,它没有严格定义的接口与数据格式,更像一套设计原则。REST将所有的一切都视为资源,通过客户端发送HTTP动词到相应的URL从而实现资源的调           动。

各种服务的简单实例:

PHP与SOAP

简单介绍:

PHP中含有SOAP扩展这样方便我们建立与使用SOAP类型的API。其中SOAP分为WSDL类型SOAP与非WSDL类型SOAP,在现如今大多数使用的的SOAP是含有WSDL的。个人对与这两种的理解是:含WSDL是标准类型的,因为WSDL使用了XML标准语法对你提供的方法类进行了描述(描述服务)。

由于PHP中没有将方法类生成WSDL文件的功能函数,因此我们需要借助别的工具将WSDL文件搞出来。(讲解WSDL类型时再介绍)

server:  public SoapServer::__construct ( mixed $wsdl [, array $options ] )

参数:第一个参数为必要参数,如果为WSDL类型的SOAP则填入WSDL的地址(可以是相对地址或者Web地址)

        其他参数包括:uri(命名空间)、location(服务器所在地址)、encoding(设置编码)、soap_version(设置soap服务版本 SOAP_1_1 or SOAP_1_2),其中前两个在非         WSDL中为必要参数

Client:  public SoapClient::SoapClient ( mixed $wsdl [, array $options ] )

参数:第一个为必要参数

此扩展详细介绍可看官方手册:http://php.net/manual/en/book.soap.php

1、先从简单的无WSDL入手

首先建立服务方法类即:WebService.class.php

  

1 <?php  

2>
3 {  

4     public function test()  

5     {  

6         return 'WebService: test';  

7     }  

8 }  

  其次在建立Server.php提供访问入口
  

1 <?php  

2 include_once './WebService.class.php';  

3 $options=array('uri'=>'', 'location'=>'' );  

4 $server=new SoapServer(NULL,$options);  

5 $server->setClass('WebService'); #填写类名  
6 $server->handle();
  

  最后访问:Client.php
  

1 <?php  

2 $options=array(  

3     'uri'=>'',  
4     'location'=>'http://www.test99.com/nowsdl/Server.php',
  
5     );
  
6 $client=new SoapClient(NULL,$options);
  
7 echo $client->test();
  

  访问结果:
DSC0001.jpg

  小结:通过各种组合测试发现,不管SoapServer还是SoapClient中的参数options,对于非WSDL来说:1、uri是必须的(即使为空)2、SoapServer中的location可有可无都可以,而SoapClient的location为必要的,而且不能为空(客户端空过此数据来定位API)
  (以上是自己的一些见解,若有不足或者错误请各位指出)
  如果您觉得本文对你有用,不妨帮忙点个赞,或者在评论里给我一句赞美,小小成就都是今后继续为大家编写优质文章的动力,流云拜谢! 欢迎您持续关注我的博客:
  作者:那一叶随风
  博客地址:http://www.cnblogs.com/phpstudy2015-6/p/6156055.html
  声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。非商业,未授权贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文链接。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429796-1-1.html 上篇帖子: php与java通用AES加密解密算法 下篇帖子: PHP开发微信公众号(二)消息接受与推送
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表