Middleware là gì?

Middleware là phần mềm hoặc thành phần của phần mềm nó kết nối các ứng dụng, các phần mềm, các dịch dụ trên hệ thống lại với nhau. Ban đầu Middleware chỉ dùng như là mốt kết nối giữa ứng dụng và hệ điều hành, nhưng ngày nay Middleware giúp kết nối giữa các ứng dụng, thành phần ứng dụng, những nền tảng lại với nhau.


Đối với các ứng dụng làm việc với giao thức HTTP (gửi nhận HTTP Message - Request/Response) đó là các ứng dụng Web, thì có thể nói: Middleware là code nằm giữa Request và Response. (Hãy tham khảo thêm Http Message). Middleware có thể nhận các yêu cầu (HTTP Request) gửi đến, thi hành các tác vụ trên request đó, rồi có thể trả về response (Http Response) hoặc chuyển thông tin cho Middleware tiếp theo trong hàng đợi các Middleware (pipeline).

Trong các ứng dụng Web, tùy theo ngôn ngữ lập trình, Framework mà ứng dụng sử dụng, thì các Http Message được đóng gói thành các đối tượng. Các Middleware kết nối với nhau thành luồng gọi là pileline để xử lý thông tin đó.

Hình 1 - Pipeline (chuỗi các middleware) xử lý Http Message. Có các middleware luôn được chạy và gọi middleware tiếp theo để trả về Http Response. Có một số Middleware (như bắt lỗi 404), thì nó trả về ngay Http Response mà không gọi Middleware tiếp theo

Trong Node.js bạn có thể tham khảo senchalabs/connect để tìm hiểu về ứng dụng sử dụng Middleware đơn giản.

Trong C#, ứng dụng APS.NET CORE có sử dụng Middleware như là thành phần cốt lỗi trong kiến trúc ứng dụng: Middleware trong APS.NET

architecture-middleware

Hình 1 - Kiến trúc ứng dụng với Middleware trong laminas-stratigility (Zend Framework), đáp ứng chuẩn HTTM Message

Giới thiệu, cài đặt Slim Framework

Trong PHP, Slim Framework là một framework siêu nhỏ xây dựng theo kiểu Middleware. Nó là lựa chọn tốt khi cần các ứng dụng Web API

Để cài đặt sử dụng lệnh composer ở thư mục dự án:

composer require slim/slim "^3.0"

Hoặc vào trang chủ Slim tải về đặt ở thư mục dự án. Bắt đầu sử dụng Slim:

(Ví dụ với file index.php)

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
 

require 'vendor/autoload.php';

$app = new Slim\App();


// Thêm Middleware - Thêm vào đầu tiên - sẽ gọi cuối cùng
$app->add(function ($request, $response, $next) {
	$response->getBody()->write('Last MiddleWare <br>');
	return $next($request, $response);
});

// Thêm Middleware - Thêm vào cuỗi - sẽ gọi đầu tiên
$app->add(function ($request, $response, $next) {	
    $response->getBody()->write('Fist MiddleWare <br>');
	return $next($request, $response);
});



// Thêm vào các Route Middleware, gọi sau các Middleware thêm vào bằng $app->add
// Thêm Middleware chạy khi URL = /hello/{name}
$app->get('/hello/{name}', function (Request $request, Response $response, array $args) {
    $name = $args['name'];
    $response->getBody()->write("Hello, $name <br>");
    return $response;
});

// Thêm Middleware xử lý các truy vấn đến URL = api
$app->get('/api', function (Request $request, Response $response, array $args) {
    echo '*';
    $response->getBody()->write("API <br>");
    return $response;
}); 

$app->run();

Chạy thử ứng dụng: Tại thư mục dự án, gõ lệnh

php -S localhost:8080 index.php

Giờ có thể truy cập: http://localhost:8080/api và localhost:8080/hello/yourname để kiểm tra


Đăng ký nhận bài viết mới