當前位置:首頁 » 編程語言 » phpapi實例

phpapi實例

發布時間: 2022-09-12 13:54:09

A. 什麼是API介面,php開發API介面的例子

就是php只處理數據,而不直接輸出html


把視圖層都交給js去完成。


比如:

//獲取數據
$id=$_GET['id'];
if($id){
//支資料庫取數據
$sql="select*fromtablewhereid='".$id."'";
$re=.....;
echojson_encode($re);//返回json格式數據給前端處理
}

//修改數據
if($id&&$_GET['edit']){
////資料庫操作
echo"修改成功";
}

B. 怎麼用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了!

C. 如何使用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;

    }

    }

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

    D. php如何開發API介面

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

    E. java 怎麼調用php的api介面

    這個看你的需求了 如果你是底層調用 你可以自己寫參考php的源碼寫c介面,如果不是底層,就php讓把數據上傳xml json格式 java處理。。。

    F. 什麼是api,php中的api有哪些啊能否幫我給出一個有關php的api的應用的例子謝謝大家啊

    API(Application Programming Interface,應用程序編程介面)是一套用來控制Windows的各個部件(從桌面的外觀到為一個新進程分配的內存)的外觀和行為的一套預先定義的Windows函數.用戶的每個動作都會引發一個或幾個函數的運行以告訴Windows發生了什麼.

    PHP API的話是PHP開發平台集成的一些PHP的函數庫,說白了就是一堆寫好的東西讓你來使用,好幫助你快速的進行PHP程序的開發。

    如淘寶的API,QQ賬號登陸的API

    G. 什麼是API介面,PHP開發API介面的例子

    api就是介面,其實說白了就是你平時寫的控制器方法,只不過這個方法的數據要加密,要驗證,是用來把這個方法的url給app或者客戶端以及別人來調的。這個方法就是api介面

    H. 如何使用 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 函數來實現。

    熱點內容
    hill密碼的加密 發布:2025-01-12 09:56:33 瀏覽:613
    組卷源碼 發布:2025-01-12 09:51:12 瀏覽:995
    java文件夾改名 發布:2025-01-12 09:49:01 瀏覽:115
    腳本函數未定義 發布:2025-01-12 09:39:44 瀏覽:635
    頁面PHP 發布:2025-01-12 09:38:07 瀏覽:200
    郵政銀行打電話登錄密碼是什麼 發布:2025-01-12 09:37:27 瀏覽:563
    linuxroot遠程登錄 發布:2025-01-12 09:37:26 瀏覽:302
    怎麼算伺服器ip 發布:2025-01-12 08:59:19 瀏覽:854
    安卓與ios哪個適合做主力機 發布:2025-01-12 08:54:11 瀏覽:341
    微軟怎麼關閉配置更新 發布:2025-01-12 08:34:23 瀏覽:316