MixPHP を使用して API インターフェイスを開発する方法

不言
リリース: 2023-04-03 06:14:01
オリジナル
3657 人が閲覧しました

この記事では、主に MixPHP を使用して API インターフェイスを開発する方法を紹介します。これには特定の参考値があります。今、あなたに共有します。必要な友人はそれを参照できます。

MixPHP は、Swoole をベースにした一般的なソフトウェアですメモリベースの PHP 高性能フレームワークであり、フレームワークの高性能機能は API インターフェイスの開発に非常に適しており、MixPHP は従来の MVC フレームワークに非常に近いため、インターフェイスの開発が非常に簡単です。

次に、API インターフェイス開発の簡単な例を示します。

id を使用して、articles テーブルから記事を取得します。

このインターフェイスにアクセスするための URL:

http://www.e.com/articles/details?id=1
ログイン後にコピー

データベース テーブルの構造は次のとおりです:

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;
ログイン後にコピー

ステップ 1

データベース構成ファイルを変更します, MixPHP アプリケーション構成ファイルでは、データベースに関する情報は common/config/database.php ファイルを参照します。

MixPHP を使用して API インターフェイスを開発する方法

ステップ 2

アプリケーション構成ファイルを変更します:

  • 応答コンポーネントのデフォルトの出力形式を変更しますJSON 形式に変換します。

  • 404/500 エラーの出力形式を JSON 形式に変更します。

MixPHP を使用して API インターフェイスを開発する方法

フレームワークのデフォルトの 404/500 応答は Web ページであり、API サービスは JSON データに応答する必要があります。通常は他の従来の MVCフレームワークでは多くの箇所を変更する必要がありますが、この要件を満たすために、MixPHP 自体がこの構成を提供しており、構成を変更するだけで済みます。

MixPHP のデフォルト Web アプリケーションには 2 つの構成ファイルがあります。つまり、

  • main.php: mix-httpd にデプロイされるときに使用されます。

  • main_compatibility.php: Apache/PHP-FPM でデプロイされる場合に使用されます。

API を開発する場合は、Apache/PHP-FPM で開発し、オンライン化後に mix-httpd にデプロイすることを推奨します。

ここで、次のように、応答キー名の下の defaultFormat キーを mix\http\Error::FORMAT_JSON に変更します。

// 响应
'response' => [
    // 类路径
    'class'         => 'mix\http\compatible\Response',
    // 默认输出格式
    'defaultFormat' => mix\http\Response::FORMAT_JSON,
    // json
    'json'          => [
        // 类路径
        'class' => 'mix\http\Json',
    ],
    // jsonp
    'jsonp'         => [
        // 类路径
        'class' => 'mix\http\Jsonp',
        // callback键名
        'name'  => 'callback',
    ],
    // xml
    'xml'           => [
        // 类路径
        'class' => 'mix\http\Xml',
    ],
],
ログイン後にコピー

次に、main_compatibility のエラー キー名の下の format キーを変更します。 .php ファイルを次のように mix\http\Error::FORMAT_JSON に追加します:

// 错误
'error'    => [
    // 类路径
    'class'  => 'mix\http\Error',
    // 输出格式
    'format' => mix\http\Error::FORMAT_JSON,
],
ログイン後にコピー

ステップ 3

コントローラーの作成:

apps/index/controllers/ArticlesController.php
ログイン後にコピー
<?php

namespace apps\index\controllers;

use mix\facades\Request;
use mix\http\Controller;
use apps\index\messages\ErrorCode;
use apps\index\models\ArticlesForm;

class ArticlesController extends Controller
{

    public function actionDetails()
    {
        // 使用模型
        $model             = new ArticlesForm();
        $model->attributes = Request::get();
        $model->setScenario(&#39;actionDetails&#39;);
        if (!$model->validate()) {
            return [&#39;code&#39; => ErrorCode::INVALID_PARAM];
        }
        // 获取数据
        $data = $model->getDetails();
        if (!$data) {
            return [&#39;code&#39; => ErrorCode::ERROR_ID_UNFOUND];
        }
        // 响应
        return [&#39;code&#39; => ErrorCode::SUCCESS, &#39;data&#39; => $data];
    }

}
ログイン後にコピー

エラー コード クラスの作成:

apps/index/messages/ErrorCode.php
ログイン後にコピー
<?php

namespace apps\index\messages;

class ErrorCode
{

    const SUCCESS = 0;
    const INVALID_PARAM = 100001;
    const ERROR_ID_UNFOUND = 200001;

}
ログイン後にコピー

フォーム検証モデルの作成:

apps/index/models/ArticlesForm.php
ログイン後にコピー
<?php

namespace apps\index\models;

use mix\validators\Validator;
use apps\common\models\ArticlesModel;

class ArticlesForm extends Validator
{

    public $id;

    // 规则
    public function rules()
    {
        return [
            &#39;id&#39; => [&#39;integer&#39;, &#39;unsigned&#39; => true, &#39;maxLength&#39; => 10],
        ];
    }

    // 场景
    public function scenarios()
    {
        return [
            &#39;actionDetails&#39; => [&#39;required&#39; => [&#39;id&#39;]],
        ];
    }

    // 获取详情
    public function getDetails()
    {
        return (new ArticlesModel())->getRowById($this->id);
    }

}
ログイン後にコピー

データ テーブル モデルの作成:

apps/common/models/ArticlesModel.php
ログイン後にコピー
<?php

namespace apps\common\models;

use mix\facades\RDB;

class ArticlesModel
{

    const TABLE = &#39;articles&#39;;

    // 获取一行数据通过id
    public function getRowById($id)
    {
        $sql = "SELECT * FROM `" . self::TABLE . "` WHERE id = :id";
        $row = RDB::createCommand($sql)->bindParams([
            &#39;id&#39; => $id,
        ])->queryOne();
        return $row;
    }

}
ログイン後にコピー

上記はすべてのコードの記述です。

ステップ 4

Postman を使用して、次のようにテストします。

MixPHP を使用して API インターフェイスを開発する方法

インターフェースの開発とテストは完了しました。単純?

上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

Swoole の学習 - 非同期タスクの分析

Swoole の学習 - Swoole の概要# ##################################

以上がMixPHP を使用して API インターフェイスを開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!