ホームページ > バックエンド開発 > PHPチュートリアル > PHP フレームワーク Lumen を使用して、シンプルで使いやすい RESTful API サービスを開発します。

PHP フレームワーク Lumen を使用して、シンプルで使いやすい RESTful API サービスを開発します。

WBOY
リリース: 2023-06-27 14:28:01
オリジナル
1027 人が閲覧しました

インターネット技術の急速な発展に伴い、データの送信と対話に RESTful API を使用するアプリケーションがますます増えています。 RESTful API は、HTTP プロトコルに基づいた通信のための軽量フレームワークであり、拡張が容易で互換性が高いという利点があります。 PHP は非常に人気のあるサーバーサイド プログラミング言語であり、優れたフレームワークが数多くありますが、その中でも Lumen は RESTful API サービスを迅速に構築できる軽量の PHP フレームワークです。

この記事では、Lumen を使用してシンプルで使いやすい RESTful API サービスを開発する手順を紹介します。次の側面について説明します。

  1. Lumen の概要
  2. RESTful API の基本
  3. RESTful API サービスの構築を開始する
  4. コントローラーの作成
  5. モデルの作成
  6. ルートの作成
  7. API のテスト

1. Lumen の概要

Lumen は Laravel のマイクロフレームワークです。フレームワーク。高速かつ効率的な機能を備えています。 LumenはLaravelと比べて軽量であり、応答速度も速いです。 Lumen は依存関係管理ツールとして Composer を使用します。これは PHP 7 以降に基づいており、RESTful API カプセル化をサポートしています。

2. RESTful API の基礎知識

RESTful API は、通信用の HTTP プロトコルに基づいたデータ送信および対話方式です。 RESTful API の基本的な制約は次のとおりです。

  • クライアント/サーバー モデル
  • ステートレス
  • キャッシュ可能
  • 統一インターフェイス
  • レイヤードsystem

一般的に使用される HTTP メソッドには、GET、POST、PUT、および DELETE があります。これらのHTTPメソッドとURLリソースパスを組み合わせることで、RESTful APIサービスを構築できます。

3. RESTful API サービスの構築を開始する

まず、Lumen フレームワークをインストールする必要があります。コマンド ライン ターミナルに次のコマンドを入力します:

composer create-project --prefer-dist laravel/lumen your-project-name
ログイン後にコピー

インストールが完了したら、プロジェクト ディレクトリに入り、artisan コマンド ライン ツールを使用してコントローラー、モデル、およびその他の必要なファイルを作成します:

php artisan make:controller YourControllerName
php artisan make:model YourModelName
ログイン後にコピー

さあ、これで Lumen フレームワークのインストールが完了し、次の作業に必要なファイルが作成されました。

4. コントローラーを作成する

コントローラーは、リクエストを処理し、レスポンスを返すために使用される PHP クラスです。 Lumen フレームワークでは、コントローラーは通常 /app/Http/Controllers フォルダーに保存されます。

データに対する CRUD 操作を処理するコントローラーを作成します。ここでは、ID、名前、電子メール、その他のフィールドを含むユーザー データ テーブルがあると仮定します。

<?php

namespace AppHttpControllers;

use AppModelsUser;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;

class UserController extends Controller
{
    public function index()
    {
        return response()->json(User::all());
    }

    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required|max:255',
            'email' => 'required|email|unique:users'
        ]);

        if ($validator->fails()) {
            return response()->json($validator->errors(), 400);
        } else {
            $user = User::create([
                'name' => $request->input('name'),
                'email' => $request->input('email')
            ]);
            return response()->json($user, 201);
        }
    }

    public function update(Request $request, $id)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'max:255',
            'email' => 'email|unique:users'
        ]);

        if ($validator->fails()) {
            return response()->json($validator->errors(), 400);
        } else {
            $user = User::find($id);
            if ($user) {
                $user->name = $request->input('name');
                $user->email = $request->input('email');
                $user->save();
                return response()->json($user);
            } else {
                return response()->json(['error' => 'User not found'], 404);
            }
        }
    }

    public function show($id)
    {
        $user = User::find($id);
        if ($user) {
            return response()->json($user);
        } else {
            return response()->json(['error' => 'User not found'], 404);
        }
    }

    public function destroy($id)
    {
        $user = User::find($id);
        if ($user) {
            $user->delete();
            return response()->json(['message' => 'User deleted']);
        } else {
            return response()->json(['error' => 'User not found'], 404);
        }
    }
}
ログイン後にコピー

ここでは、インデックス、保存、更新、表示、破棄を含む UserController という名前のコントローラー クラスを作成します。 5つの方法。これらはそれぞれ、RESTful API の 5 つの一般的な操作 (リソースの取得、リソースの作成、リソースの更新、指定されたリソースの取得、リソースの削除) に対応しています。

上記のコードでは、Lumen フレームワークのレスポンダー (response()) とモデル (User)、および Lumen フレームワークによって提供されるバリデーター (Validator) を使用します。これらに加えて、コントローラーに他の依存関係を導入して、より複雑な操作を実行することもできます。

5. モデルを作成する

モデルは通常、データ リクエストを処理するためにコントローラーが呼び出されたときにデータを正しく読み取って処理できるように、データ テーブルを表現するために使用されます。 Lumen フレームワークでは、モデル ファイルは通常 /app/Models フォルダーに保存されます。

次は単純なモデルです。このモデルでは、データ テーブル名が users であることに同意しました:

<?php

namespace AppModels;

use IlluminateDatabaseEloquentModel;

class User extends Model
{
    protected $table = 'users';
    protected $fillable = ['name', 'email'];
}
ログイン後にコピー

上記のコードの User クラスは、Lumen の Model クラスを継承しています。フレームワークには、いくつかの重要な属性変数とメソッドが含まれています。ここでは、protected $table = 'users' を使用して、このモデルに対応するデータ テーブルの名前が users であることに同意します。また、fillable 属性を使用して、バッチ割り当てできるフィールドを制限します。

6. ルーティングの書き込み

ルーティングでは、リクエストの URL パスと、リクエストの分散に使用される対応するコントローラー メソッドを指定します。 Lumen フレームワークでは、ルーティング ファイルは通常 /routes フォルダーに保存されます。

<?php

$router->get('/', function () use ($router) {
    return $router->app->version();
});

$router->get('/users', 'UserController@index');
$router->post('/users', 'UserController@store');
$router->get('/users/{id}', 'UserController@show');
$router->put('/users/{id}', 'UserController@update');
$router->delete('/users/{id}', 'UserController@destroy');
ログイン後にコピー

上記のコードでは、ルーター ($router) の get、post、put、delete を使用して HTTP を指定する 5 つの操作に対応する URL パスと処理メソッドを指定します。リクエストメソッド。

7. API のテスト

Lumen フレームワークのインストール、コントローラー コードの記述、モデルの定義、ルーティングの設定が正常に完了したので、次のことができます。試して。コマンド ライン ターミナルに次のコマンドを入力して Web サービスを開始します:

php -S 127.0.0.1:8000 -t public
ログイン後にコピー

次に、ブラウザを開き、localhost:8000/users と入力して上記の API サービスにアクセスすると、ユーザー リストが表示されます。あるいは、Postman またはその他の HTTP クライアント ツールを使用してインターフェイスをテストすることもできます。

概要

Lumen フレームワークを使用すると、シンプルで使いやすい RESTful API サービスを簡単に構築できます。 Lumen フレームワークのサポートにより、コントローラー、モデル、ルートなどの必要なファイルをすばやく作成し、コマンド ライン ツールを使用してテスト用の Web サービスを開始できます。従来のPHP開発手法と比較して、開発効率とプログラムの運用効率を大幅に向上させることができます。

以上がPHP フレームワーク Lumen を使用して、シンプルで使いやすい RESTful API サービスを開発します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート