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