PHP與API講解(一)

來源:互聯網
上載者:User

標籤:檔案   method   roc   定位   url   資料   call   簡單   方便   

瞭解API

在使用與建立自己的API之前我們需要先瞭解什麼是API!

API代表API,而介面指的是一個特定的服務、一個應用程式或者其他程式的公用模組。

理解SOA(面向服務的架構):SOA是PHP應用程式日益普及的方法,它是基於一個服務層的系統,提供系統所需要的所有功能,但這個功能提供的是應用程式層,並未串連到表現層。這樣,多種系統就可以使用這個相同的模組化、可重複使用的功能了。(備忘:在學習API的時候看過的兩本有關API的書籍都有提到這個SOA,但是由於自己還是個菜鳥所以對這個理解不太深。所以對於以上SOA的含義摘抄於PHP精粹-編寫高效PHP代碼(美))

在使用api是涉及到一個重要的問題是傳輸的資料格式:在API資料轉送中主要使用XML與Json資料格式。在這就不對這兩個資料格式展開講解了。

使用的協議時HTTP超文字傳輸通訊協定 (HTTP)。所謂的訪問API簡單的來說就是用戶端通過HTTP來訪問伺服器已定義好的程式,再進一步理解就是使用編程代碼通過HTTP請求API獲得自己所需要的資料。看如下簡單過程圖:

 

理解服務類型:

RPC:即Remote ProcedureCall遠程調用過程,RPC服務也就是調用遠端函數並返回需要的資料(大多數時候需要傳入參數,視API而定)。RPC主要分為XML-RPC和Json-             RPC。

SOAP:即Simple Object Access Protocol簡易物件存取通訊協定 (SOAP),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 <?php2 class WebService3 {4     public function test()5     {6         return ‘WebService: test‘;7     }8 }

其次在建立Server.php提供訪問入口

1 <?php2 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 <?php2 $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)

(以上是自己的一些見解,若有不足或者錯誤請各位指出)

 

 

 

PHP與API講解(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.