導航:首頁 > 編程語言 > api開發教程php

api開發教程php

發布時間:2022-04-24 12:18:02

⑴ 怎麼用php開發API供其他客戶端調用

一、介面的分類:

1、URL類型的介面
URL
路由帶參數式的介面!這個很好做!只要有過Web開發經驗的人都能完成!這種介面數據不夠隱蔽性,可以直接在瀏覽其中看到,如支付寶的交易請求URL。需
要加一個MD5簽名,和伺服器端的再次向支付寶伺服器發送驗證!雖然soap方式傳遞的數據隱蔽性很好!但為了數據安全,難免也需要進行數據簽名。

2、SOAP類型的介面
無關編程語言、無關平台、擴展性很好,要實現一個SOAP 型的介面,有兩種方式:一種有WSDL文件方式、一中無WSDL文件方式!

於熱愛研究型的人來說,使用第一種方式可以讓你清楚的了解PHP是怎麼創建了一個Web
Service!但第一種對於新手來說,創建一個XML格式的WSDL文件,是比較難的,這你的先了解熟悉什麼是XML!學會XML語法!但對於一個急於
解決問題的人來說!沒有這么多的時間去熟悉!所以這是件煩惱的事!

二、PHP環境設置
先配置下PHP的soap環境支持:
找到php.ini文件
;extension=php_soap.dll
刪除掉";" ,重啟apache伺服器
為了便於測試,需要關於wsdl緩存
方式1:
配置文件:php.ini 選項 soap.wsdl_cache_enabled 設置為0
方式2:
代碼頭添加:ini_set('soap.wsdl_cache_enabled', "0"); //關閉wsdl緩存

三、有WSDL文件方式創建

這里先介紹標準的webservice。 那麼如何創建wsdl呢?對於PHP來說這確實是件很不容易的事情,有人說用zend
studio創建很方便,這是一種方法。但對於那些不喜歡用zend studio的人來說,會覺得創建一個web service還要安裝zend
studio,太強人所難了。
在這里介紹一個簡單的方法,到網上下載SoapDiscovery.class.php類,裡面有個公用方法:getWSDL,這個方法末尾是用的 return,那麼,你修改一下這個方法:
//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>');
//生成wsdl文件,將上面的return注釋
$fso = fopen($this->class_name . ".wsdl" , "w");
fwrite($fso,
sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL,
$serviceWSDL, $messageWSDL, '</definitions>'));
現在生成wsdl的類有了,SoapDiscovery.class.php(源碼在最末尾)。

再准備一個提供服務的Service.php類文件或者函數就可以創建wsdl了!

⑵ php開發api介面,如何做才算是安全的

這個問題很深

安全,不敢當,因為web安全問題很多,不僅僅是PHP編碼而已,有很多安全上的問題需要做處理,像伺服器漏洞、埠開放都會導致被黑,這都是很正常的。

只能說 比如在我做PHP開發過程的一些安全保護和在網路安全公司開發時的工作要求:

1、最基礎的,提供的api介面 要配置https。

2、api返回響應的信息,要盡可能使用消息加密返回,如高位數的 rsa加密內容。

3、接收的回調開放介面,盡可能做到使用回調黑、白名單,如加ip白名單放行,或ip黑名單禁止訪問。

4、不要相信用戶輸入、輸入信息要進行編碼轉換、轉義、過濾、使用框架和插件進行處理,如MySQL查詢的要進行參數綁定、如顯示問題要避免xss攻擊會進行過濾。

5、授權操作,錯誤限制設置閥值、超過閥值限制訪問、如最基礎的登錄功能。

6、常見額弱口令問題導致漏銅,應設置高強度口令,避免程序爆破。

7、文件上傳問題、應嚴格校驗文件類型、後綴、格式、及文件目錄許可權設置,從而避免文件上傳漏洞導致惡意代碼或webshell攻擊。

8、開發環境和生產環境隔開,不要再生產上面開debug、及時更新使用框架漏洞補丁如PHP國內常用 tp系列以前偶爾爆出漏洞(我用的較多就是tp5 ....),還有框架不要用最新要選擇最穩定的。

最後注意不管是驗證還是過濾,在客戶端執行過一次也好,在服務端,都要再次執行驗證和校驗。


和盛之文 我的文章保存網站,歡迎訪問學習或參考

⑶ 如何使用 php 開發 api

比如一個自定義函數:function test(){echo 『hello world』;}就可以叫做 api。api 既可以是單個的函數,也可以是封裝在類里的方法,當然它們也是程序代碼。開發一個 api 的流程可以很簡單,也可以很復雜,視具體的編程任務而決定,並沒有特定的規則。比如,你需要為自己建立一個常用的函數庫,命名為 my.lib.php然後把你自己編寫的自定義函數,全部寫在這個文件裡面,那麼,你就擁有了自己的api。開發的時候,只需要引入 my.lib.php,你就可以調用自己的 api 了。這是一個比較簡單的例子。稍微復雜一點的,你可以把函數封裝在類裡面,方便繼承和重用,還可以根據函數名稱做一些程序設計,這個一句話說不清楚,給一個簡單的例子吧:class mylib{function showmy(){echo 『這是我的一個類方法』;}}調用的時候,先要實例化類,然後再調用方法。再復雜一點的就是使用類介面,區別就是介面裡面定義的只是方法原型,而你需要通過具體的類來實現介面中的函數,具體請參考 php 手冊,關於介面的介紹。還有一種介面不是通過直接訪問介面代碼來實現功能的,這就是我們常說的 web service,俗稱遠程調用:比如:我的一個網站 www.test.com/api在這個網址里包含了我開放的一些介面,可以供網路上的其它用戶來獲取我網站的會員信 息 等 , 假 設 這 個 接 口 名 叫 userinfo , 那 么 開 發 者 可 以 通 過www.test.com/api/userinfo 來獲取某一個會員的信息,當然具體的代碼肯定很多,這里只是舉例子說明。尤其要著重說明的是,開發者不是通過直接訪問 www.test.com/api/userinfo 來獲取用戶信息的,當向別人開發自己網站的介面時,你需要編寫一些介面文件,供別人來使用 ,一般可以通過 fsockopen 函數來實現。

⑷ 如何使用MixPHP來開發API介面

下面做一個開發 API 介面的簡單實例:

從articles表,通過id獲取一篇文章。

訪問該介面的 URL:

1

http://www.e.com/articles/details?id=1

資料庫表結構如下:

1

2

3

4

5

6

7

CREATE TABLE `articles` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`title` varchar(255) NOT NULL,

`content` varchar(255) NOT NULL,

`dateline` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第一步

修改資料庫配置文件,MixPHP 的應用配置文件中,關於資料庫的信息都引用了 common/config/database.php 文件。

框架默認的 404/500 響應是網頁,而 API 服務需要響應 JSON 數據,通常其他傳統 MVC 框架需要修改很多地方才可完成這個需求,MixPHP 本身就提供該種配置,只需修改一下配置即可。

MixPHP 的默認 Web 應用中有兩個配置文件,分別為:

  • main.php : 部署在 mix-httpd 時使用。

  • main_compatible.php :部署在 Apache/PHP-FPM 時使用。

  • 開發 API 時我們推薦在 Apache/PHP-FPM 下開發,上線再部署至 mix-httpd 即可,反正是無縫切換的。

    現在我們修改 response 鍵名下的 defaultFormat 鍵為 mixhttpError::FORMAT_JSON,如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

  • // 響應

    'response' => [

    // 類路徑

    'class' => 'mixhttpcompatibleResponse',

    // 默認輸出格式

    'defaultFormat' => mixhttpResponse::FORMAT_JSON,

    // json

    'json' => [

    // 類路徑

    'class' => 'mixhttpJson',

    ],

    // jsonp

    'jsonp' => [

    // 類路徑

    'class' => 'mixhttpJsonp',

    // callback鍵名

    'name' => 'callback',

    ],

    // xml

    'xml' => [

    // 類路徑

    'class' => 'mixhttpXml',

    ],

    ],

  • 然後修改 main_compatible.php 文件中 error 鍵名下的 format 鍵為 mixhttpError::FORMAT_JSON,如下:

    1

    2

    3

    4

    5

    6

    7

  • // 錯誤

    'error' => [

    // 類路徑

    'class' => 'mixhttpError',

    // 輸出格式

    'format' => mixhttpError::FORMAT_JSON,

    ],

  • 第三步

    創建控制器:

    1

  • apps/index/controllers/ArticlesController.php

  • 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

  • <?php

    namespace appsindexcontrollers;

    use mixfacadesRequest;

    use mixhttpController;

    use appsindexmessagesErrorCode;

    use appsindexmodelsArticlesForm;

    class ArticlesController extends Controller

    {

    public function actionDetails()

    {

    // 使用模型

    $model = new ArticlesForm();

    $model->attributes = Request::get();

    $model->setScenario('actionDetails');

    if (!$model->validate()) {

    return ['code' => ErrorCode::INVALID_PARAM];

    }

    // 獲取數據

    $data = $model->getDetails();

    if (!$data) {

    return ['code' => ErrorCode::ERROR_ID_UNFOUND];

    }

    // 響應

    return ['code' => ErrorCode::SUCCESS, 'data' => $data];

    }

    }

  • 創建錯誤碼類:

    1

  • apps/index/messages/ErrorCode.php

  • 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

  • <?php

    namespace appsindexmessages;

    class ErrorCode

    {

    const SUCCESS = 0;

    const INVALID_PARAM = 100001;

    const ERROR_ID_UNFOUND = 200001;

    }

  • 創建表單驗證模型:

    1

  • apps/index/models/ArticlesForm.php

  • 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

  • <?php

    namespace appsindexmodels;

    use mixvalidatorsValidator;

    use appscommonmodelsArticlesModel;

    class ArticlesForm extends Validator

    {

    public $id;

    // 規則

    public function rules()

    {

    return [

    'id' => ['integer', 'unsigned' => true, 'maxLength' => 10],

    ];

    }

    // 場景

    public function scenarios()

    {

    return [

    'actionDetails' => ['required' => ['id']],

    ];

    }

    // 獲取詳情

    public function getDetails()

    {

    return (new ArticlesModel())->getRowById($this->id);

    }

    }

  • 創建數據表模型:

    1

  • apps/common/models/ArticlesModel.php

  • 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

  • <?php

    namespace appscommonmodels;

    use mixfacadesRDB;

    class ArticlesModel

    {

    const TABLE = 'articles';

    // 獲取一行數據通過id

    public function getRowById($id)

    {

    $sql = "SELECT * FROM `" . self::TABLE . "` WHERE id = :id";

    $row = RDB::createCommand($sql)->bindParams([

    'id' => $id,

    ])->queryOne();

    return $row;

    }

    }

  • 以上就是全部代碼的編寫。

    ⑸ 如何用PHP開發API介面

    他會提供相應介面給你的,具體調用方法就相當於講求某個鏈接。act=get_user_list&type=json在這里operate.php相當於一個介面,其中get_user_list 是一個API(獲取用戶列表),講求返回的數據類型為JSON格式。

    act=get_user_list&type=json';$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);curl_setopt($ch,CURLOPT_POST,1);//啟用POST提交$file_contents=curl_exec($ch);curl_close($ch);

    ⑹ php如何開發API介面

    比如一個自定義函數:function test(){echo 『hello world』;}就可以叫做 api。api 既可以是單個的函數,也可以是封裝在類里的方法,當然它們也是程序代碼。開發一個 api 的流程可以很簡單,也可以很復雜,視具體的編程任務而決定,並沒有特定的規則。比如,你需要為自己建立一個常用的函數庫,命名為 my.lib.php然後把你自己編寫的自定義函數,全部寫在這個文件裡面,那麼,你就擁有了自己的api。開發的時候,只需要引入 my.lib.php,你就可以調用自己的 api 了。這是一個比較簡單的例子。稍微復雜一點的,你可以把函數封裝在類裡面,方便繼承和重用,還可以根據函數名稱做一些程序設計,這個一句話說不清楚,給一個簡單的例子吧:class mylib{function showmy(){echo 『這是我的一個類方法』;}}調用的時候,先要實例化類,然後再調用方法。再復雜一點的就是使用類介面,區別就是介面裡面定義的只是方法原型,而你需要通過具體的類來實現介面中的函數,具體請參考 php 手冊

    ⑺ 哪位有thinkphp api介面開發視頻教程啊

    Peter

    鏈接: https://pan..com/s/1wnjgdabRiE_jXg1mhYbHig

    提取碼: 4zuf 復制這段內容後打開網路網盤手機App,操作更方便哦

    若資源有問題歡迎追問~

    ⑻ PHP如何開發api介面安全驗證實例

    在實際工作中,使用PHP寫api介面是經常做的,PHP寫好介面後,前台就可以通過鏈接獲取介面提供的數據,而返回的數據一般分為兩種情況,xml和json,在這個過程中,伺服器並不知道,請求的來源是什麼,有可能是別人非法調用我們的介面,獲取數據,因此就要使用安全驗證。

    ⑼ PHP網站如何使用API介面

    聚合數據的api一般都有文檔,你要實現什麼功能,看他啥說明,你自己編寫代碼就可以了,沒有文檔的話那就自己測試api功能,然後再寫處理,調用吧,還不會的話寫可以找額代開發或者指導教學

    ⑽ php怎麼寫api介面

    api和WEB開發一樣,首先是需要一些相關參數,這類參數,會有客戶端傳過來,也許是POST或GET,這需要制定統一規范或者開發團隊約定好。而有了參數後,可根據應用需求,完成其數據處理。數據邏輯處理完後,返回客戶端所需要用到的相關數據,例如:任務狀態、內購結果、玩家信息等等數據怎麼返給客戶端?直接輸出的形式,如:JSON、XML、TEXT 等等。

    閱讀全文

    與api開發教程php相關的資料

    熱點內容
    linux分區讀取 瀏覽:794
    單片機液晶顯示屏出現雪花 瀏覽:890
    解壓器用哪個好一點 瀏覽:771
    什麼app看小說全免費 瀏覽:503
    sha和ras加密 瀏覽:823
    韓順平php視頻筆記 瀏覽:636
    阿里雲ecs伺服器如何設置自動重啟 瀏覽:596
    三星電視怎麼卸掉app 瀏覽:317
    如何將pdf轉換成docx文件 瀏覽:32
    dos命令批量改名 瀏覽:376
    centosphp環境包 瀏覽:601
    mfipdf 瀏覽:534
    電腦解壓後電腦藍屏 瀏覽:295
    外網訪問內網伺服器如何在路由器設置 瀏覽:856
    2014統計年鑒pdf 瀏覽:434
    linuxoracle用戶密碼 瀏覽:757
    股票交易pdf 瀏覽:898
    p2papp源碼 瀏覽:308
    記錄睡眠軟體app哪個好用 瀏覽:140
    液壓助力車壓縮比 瀏覽:217