Skip to main content

Request & Response

Request

Class Request cung cấp các phương thức để truy cập dữ liệu HTTP request.

Lấy Request Instance

use Vietiso\Core\Http\Request;

#[Post('/users')]
public function store(Request $request)
{
// Sử dụng $request
}

Lấy Input Data

// Lấy tất cả input
$all = $request->all();

// Lấy 1 field
$name = $request->input('name');

// Với giá trị mặc định
$page = $request->input('page', 1);

// Kiểm tra field tồn tại
if ($request->has('email')) {
// ...
}

// Lấy nhiều fields
if ($request->has(['email', 'password'])) {
// ...
}

Type Casting

// Integer
$id = $request->integer('id');

// Boolean
$active = $request->boolean('active');

// Float
$price = $request->float('price');

// String (Stringable object)
$name = $request->string('name');

// Date
$date = $request->date('birthday');
$date = $request->date('created_at', 'Y-m-d H:i:s');

// Enum
$status = $request->enum('status', OrderStatus::class);

Query Parameters

// Lấy query string
$page = $request->query('page');

// URL: /users?page=2&limit=10
$page = $request->query('page'); // 2
$limit = $request->query('limit'); // 10

Headers

// Lấy header
$contentType = $request->header('content-type');

// Kiểm tra header tồn tại
if ($request->hasHeader('Authorization')) {
// ...
}

// Lấy Bearer token
$token = $request->bearerToken();

// User Agent
$userAgent = $request->userAgent();

Files

// Lấy file upload
$file = $request->file('avatar');

if ($file) {
$path = $file->getRealPath();
$mimeType = $file->getMimeType();
$size = $file->getSize();
$originalName = $file->getClientOriginalName();
}

URL & Path

// URI path
$uri = $request->uri(); // /users/1

// Full URL
$url = $request->url(); // http://localhost:9501/users/1

// Full URL với query
$fullUrl = $request->fullUrl(); // http://localhost:9501/users/1?tab=profile

// Thêm query params
$url = $request->fullUrlWithQuery(['page' => 2]);

Request Information

// HTTP method
$method = $request->method(); // GET, POST, PUT, DELETE...

// Kiểm tra method
if ($request->isMethod('post')) {
// ...
}

// Client IP
$ip = $request->ip();
$ips = $request->ips(); // Tất cả IPs (với proxy)

// Kiểm tra HTTPS
$isSecure = $request->isSecure();

// Schema
$schema = $request->schema(); // http hoặc https

// Host
$host = $request->getHost();

// Port
$port = $request->port();

Content Type

// Kiểm tra JSON request
if ($request->isJson()) {
// Content-Type là application/json
}

// Kiểm tra client muốn JSON response
if ($request->wantsJson()) {
// Accept header chứa application/json
}

// Kiểm tra AJAX
if ($request->ajax()) {
// X-Requested-With: XMLHttpRequest
}

Session

// Lấy session
$session = $request->session();

// Kiểm tra có session
if ($request->hasSession()) {
// ...
}

Response

JSON Response

use Vietiso\Core\Http\Response;

// Trả về JSON
return Response::json(['status' => 'success']);

// Với status code
return Response::json(['error' => 'Not found'], 404);

// Hoặc return trực tiếp array
return ['status' => 'success'];

Redirect

// Redirect đến URL
return Response::redirect('/dashboard');

// Với status code
return Response::redirect('/login', 302);

Download

// Download file
return Response::download('/path/to/file.pdf');

// Với tên file custom
return Response::download('/path/to/file.pdf', 'report.pdf');

Custom Response

$response = new Response();
$response->setStatusCode(200);
$response->setHeader('Content-Type', 'text/plain');
$response->setContent('Hello World');

return $response;

Response Headers

return Response::json($data)
->withHeader('X-Custom-Header', 'value')
->withHeader('Cache-Control', 'no-cache');

Cookies

return Response::json($data)
->withCookie('name', 'value', 3600); // expires in 1 hour