Ground Sunlight

Windowsで作る - Webプログラミングの開発環境(PHP)

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

道具箱

リポジトリ編

フレームワーク編

Webサービス編

自然言語処理環境編

メタ
リンク


このページへのアクセス
今日: 1 / 昨日: 0
総計: 25

apricot:usage:ja:middleware
編集中

Apricot ミドルウェア

ミドルウェアの構成

本章ではミドルウェア基盤を作ります。ミドルウェアとはアクションを囲んでいる層のような存在で、ユーザからのリクエストは何層もあるミドルウェアを通って最終的にアクションにたどり着きそこでレスポンスが生成されますが、途中でリクエストが中断され、ミドルウェアがレスポンスを生成することもあります。これを図示すると以下のようになります。

ミドルウェア構造

上図のような処理のネスト構造を パイプライン (pipeline) と呼び、特に多層になったミドルウェア構造を ミドルウェアパイプライン と呼ぶ事にします。

Apricotには以下のミドルウェアが実装されています。

  • アクセスログ
  • CSRF対策
  • ユーザ認証

ミドルウェアパイプラインを含めたミドルウェアの仕組みはApricotのコアの機能として実装しますが、上記のような具体的なミドルウェアの実装はアプリ側で行います。

Middleware インターフェース

冒頭のミドルウェア構造の図から分かるように、ミドルウェアの役割は自分を処理の後に次のプロセッサーに制御を渡すことです。この時、プロセッサーにはミドルウェアとアクションの両方があるので、前出のInvoker インターフェースを使います。ミドルウェアは任意タイミングで Invokerを 使うことができるので、前処理、後処理またはその両方ができます。また、クライアントの要求を自分だけで消費して Invoker を使うことなく自分のレスポンスを返すことも可能です。

/apricot/core/Foundation/Middleware

Middleware.php
<?php
namespace Apricot\Foundation\Middleware;
 
use Apricot\Foundation\Invoker;
use Apricot\Foundation\Response;
 
/**
 * Middleware Interface
 */
interface Middleware
{
    /**
     * Processes an incoming request and produces a response.
     *
     * @param Invoker $next Next invoker.
     * @return \Apricot\Foundation\Response if return a response within this method, then don't call the next action.
     */
    public function process(Invoker $next) :Response;
}


アクセスログ

TODO


認証

TODO


CSRF

TODO


コメント

コメントを入力. Wiki文法が有効です:
 
apricot/usage/ja/middleware.txt · 最終更新: 2020/08/12 10:08 by y2sunlight