Middlewares

Another cool feature of WP-FastEndpoints is the support for middlewares.

Middlewares are pieces of code that can either run before and/or after a request is handled.

At this stage, you might be already familiar with returns(...) which is a middleware. However, you can also create your own.

<?php
use Attributes\Wp\FastEndpoints\Contracts\Middleware;

class MyCustomMiddleware extends Middleware
{
    /**
    * This function is triggered before the main handler runs
    * but after checking the user permissions.
    */
    public function onRequest(#(1))) {
        return; #(2)
    }

    /**
    * This function is triggered after the main handler,
    * before sending a response to the client 
    */
    public function onResponse(#(3)) {
        return; #(4)
    }
}

$router->get('/test', function () {
    return true;
})
->middleware(new MyCustomMiddleware());
  1. Supports all features that a regular endpoint supports e.g. injectables, typed request data
  2. Early response return is also supported. See Responses page
  3. Middlewares supports all features that a regular endpoint supports e.g. injectables, typed request data
  4. Early response return is also supported. See Responses page
Tip

You can create both methods in a middleware: onRequest and onResponse. However, to save some CPU cycles only create the one you need [CPU emoji]