PHP与API讲解(一)

了解API

在使用与创建自己的API之前我们需要先了解什么是API!

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

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

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

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

理解服务类型:

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 class WebService
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();

访问结果:

小结:通过各种组合测试发现,不管SoapServer还是SoapClient中的参数options,对于非WSDL来说:1、uri是必须的(即使为空)2、SoapServer中的location可有可无都可以,而SoapClient的location为必要的,而且不能为空(客户端空过此数据来定位API)

(以上是自己的一些见解,若有不足或者错误请各位指出)

 

时间: 2024-08-05 05:58:19

PHP与API讲解(一)的相关文章

smartJS 0.1 API 讲解 - PromiseEvent

上篇简单的介绍smartjs了一些通用方法的api.这篇介绍基础的PromiseEvent(这个名字一直没想好,以前准备用callbacks的,但避免与jquery混淆,st的命名空间可以直接挂到$上) PromiseEvent 基于事件和promise的回调管理,类似于jquery的callbacks,但具有结果传递,优先级,事件参数,promise控制等功能 接口方法 var events = st.promiseEvent(mode); events.add(name,function(e

【jquery】 API讲解 内部培训资料

资料在百度云盘 一.jquery  API讲解 1.jquery  api如何使用 jquery  api http://www.hemin.cn/jq/ 2.常用api讲解 选择器: 通过$()获取jquery对象的常用方式: #div1          根据元素id获取 .red             根据class获取 div               根据标签名字获取 #div1 ul li input  混合模式 li.red 查找带red这个class的li input[typ

smartJS 0.1 API 讲解 - FlowController

本篇介绍0.1版中最后一个特性,FlowController:同时也对第一版总结一下,因为近两年全部都是在搞前端,都是做一些js框架类的东西,也做了不少有意思的功能,做smartjs对我来说一个是对自己做一个总结,也希望分享一些东西给大家借鉴. 而对smartjs的来说,整体思想都并不是为了实现什么功能.特效和内容.而是希望体现一些前端编程模式或者思想上的内容,这次的0.1版本中,主要体现了一些面向切面编程.非侵入式编程.异步编程,生命周期控制的一些思想.包括后续的oop的内容,基于策略的数据管

HTML5 文件拖放API讲解

本章向大家讲解一下HTML 5中文件API与拖放API的使用方法.HTML5的文件API,可以在浏览器中直接显示客户端文件的信息或文件中的内容,而通过拖放API,可以直接将位于客户端中的文件拖动到浏览器中,也可以单独拖动页面中的元素或者元素中的内容. HTML5拖拽文件预览效果图: 在线演示 以前,我们使用file控件,单击上传按钮后选择计算机中的文件.在HTML5中,我们可以先将计算机中的文件直接拖动到浏览器中进行预览,确定文件是我们所需要的,然后单击上传按钮将该文件上传到服务器端. 我们使用

配置文件详解和核心api讲解

一.配置文件详解 1.映射文件详解 1.映射配置文件的位置和名称没有限制. -建议:位置:和实体类放在统一目录下.  名称:实体类名称.hbm.xml.    2.在映射配置文件中,标签内的name属性的值要和实体内的属性对应. (1)class标签内的name的值为实体类的全路径. (2)property标签内的name的值为实体类的属性. (3)id标签内的name的值为实体类的属性. (4)id和property标签内的column属性可以不写. (5)id和property标签内有一个t

新生的html5框架webkit 各个类的API讲解

WKWebView // webview 配置,具体看下面 @property (nonatomic, readonly, copy) WKWebViewConfiguration *configuration; // 导航代理 @property (nullable, nonatomic, weak) id <WKNavigationDelegate> navigationDelegate; // 用户交互代理 @property (nullable, nonatomic, weak) id

Activity官方API讲解

一个活动是一个单一的,集中的东西,用户可以做的.几乎所有的活动与用户交互,因此Activity类需要创建为您窗口,在其中您可以将您的UI与照顾 的setContentView(查看).而活动经常呈现给用户作为全屏窗口,它们也可以以其他方式使用:作为浮动窗口(经由与主题windowIsFloating组)或嵌入另一活性(使用的内部的ActivityGroup).有两种方法几乎所有活动的子类将实施: 的onCreate(捆绑)是你初始化你的活动.最重要的是,在这里你会通常所说的setContentV

smartJS 0.1 API 讲解 - Trigger

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

java之api讲解

1:数值运算 Java提供了java.lang.Math类支持数值运算 看文档 java.lang叫做核心语言包,里面包含的是Java中最基础的一些类,此包中的类,可以使用,不用import该包 举例:用Math类计算常用的算式 2:字符串运算 字符串运算由java.lang.String来支持 String字符串是不可变字符串,消耗内存较大. 为了解决此问题,可以选用另一个类: java.lang.StringBuffer 这个类的用法和String基本相同,原理不同 java.lang包中的