MixPHP 開發 API 介面簡單例項

2021-09-14 02:46:21 字數 2887 閱讀 7101

mixphp 是一款基於 swoole 的常駐記憶體型 php 高效能框架,框架的高效能特點非常適合開發 api 介面,而且 mixphp 非常接近傳統 mvc 框架,所以開發介面時非常簡單。

注意:這個是 mixphp v1 的範例
下面做乙個開發 api 介面的簡單例項:

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

訪問該介面的 url:

資料庫表結構如下:

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 的預設 http 應用中有兩個配置檔案,分別為:

開發 api 時我們推薦在 apache/php-fpm 下開發,上線再部署至 mix-httpd 即可,反正是無縫切換的。

現在我們修改 response 鍵名下的 defaultformat 鍵為 mix\http\error::format_json,如下:

// 響應

'response' => [

// 類路徑

// 預設輸出格式

// 類路徑

// 類路徑

// callback鍵名

'name' => 'callback',

],// xml

'xml' => [

// 類路徑

然後修改 main_compatible.php 檔案中 error 鍵名下的 format 鍵為 mix\http\error::format_json,如下:

// 錯誤

'error' => [

// 類路徑

// 輸出格式

],

建立控制器:

// 獲取資料

$data = $model->getdetails();

if (!$data)

// 響應

return ['code' => errorcode::success, 'data' => $data];}}

建立錯誤碼類:

<?php 

class errorcode

建立表單驗證模型:

<?php 

use mix\validators\validator;

class articlesform extends validator

// 場景

public function scenarios()

// 獲取詳情

public function getdetails()

}

建立資料表模型:

<?php 

use mix\facades\pdo;

class articlesmodel

}

以上就是全部**的編寫。

使用 postman 測試,如下:

介面開發與測試完成,是不是很簡單呀。

github:

官網:

API 介面開發規範

api與使用者的通訊協議,總是使用https協議,確保互動資料的傳輸安全。應該盡量將api部署在專用網域名稱之下。如果確定api很簡單,不會有進一步擴充套件,可以考慮放在主網域名稱下。應該將api的版本號放入url。v 另一種做法是,將版本號放在http頭資訊中,但不如放入url方便和直觀。gith...

PHP開發API介面

在實際工作中,使用php寫api介面是經常做的,php寫好介面後,前台就可以通過鏈結獲取介面提供的資料,而返回的資料一般分為兩種情況,xml和json,在這個過程中,伺服器並不知道,請求的 是什麼,有可能是別人非法呼叫我們的介面,獲取資料,因此就要使用安全驗證。從圖中可以看得很清楚,前台想要呼叫介面...

API介面開發規範

整體規範建議採用restful方式來實施。協議 api與使用者的通訊協議,應該使用https協議,確保互動資料的安全傳輸。網域名稱 應該盡量將api部署在專用網域名稱下。如 api版本控制 方法一 將api的版本號放入uri,如 方法二 將版本號放在http頭資訊中。這種方法不如放入url中方便和直...