PHP與API講解(一)


1、了解api

  在使用與創建自己的API之前我們需要先了解什么是API!

  API代表應用程序編程接口,而接口指的是一個特定的服務、一個應用程序或者其他程序的公共模塊。

  理解SOA(面向服務的架構):

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

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

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

 

2、理解服務類型

  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從而實現資源的調動。

3、各種服務的簡單實例

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)

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

 

如果您覺得本文對你有用,不妨幫忙點個贊,或者在評論里給我一句贊美,小小成就都是今后繼續為大家編寫優質文章的動力,流雲拜謝! 歡迎您持續關注我的博客:

作者:那一葉隨風

 博客地址:http://www.cnblogs.com/phpstudy2015-6/p/6156055.html

 聲明:本博客文章為原創,只代表本人在工作學習中某一時間內總結的觀點或結論。非商業,未授權貼子請以現狀保留,轉載時必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM