HTTP Responses
#Creating Responses
Strings & Arrays
Semua route dan pengontrol harus mengembalikan respons untuk dikirim kembali ke browser pengguna. Laravel menyediakan beberapa cara berbeda untuk mengembalikan respons. Respons paling dasar adalah mengembalikan string dari route atau pengontrol. Kerangka kerja ini akan secara otomatis mengubah string menjadi respons HTTP penuh:
Route::get('/', function () {
return 'Hello World';
});
Selain mengembalikan string dari route dan pengontrol Anda, Anda juga dapat mengembalikan array. Kerangka kerja akan secara otomatis mengubah array menjadi respons JSON:
Route::get('/', function () {
return [1, 2, 3];
});
Response Objects
Biasanya, Anda tidak hanya akan mengembalikan string atau array sederhana dari tindakan rute Anda. Sebagai gantinya, Anda akan mengembalikan contoh penuh Illuminate\HttpResponse
atau tampilan.
Mengembalikan Response
contoh lengkap memungkinkan Anda untuk menyesuaikan kode status HTTP header dan. Sebuah Response
instance mewarisi dari class Symfony\Component\HttpFoundation\Response
, yang menyediakan berbagai metode untuk membangun respons HTTP:
Route::get('home', function () {
return response('Hello World', 200)
->header('Content-Type', 'text/plain');
});
Melampirkan Header Ke Responses
Ingatlah bahwa sebagian besar metode respons dapat dihubungkan dengan rantai, memungkinkan untuk konstruksi yang lancar dari contoh respons. Misalnya, Anda dapat menggunakan header
metode untuk menambahkan serangkaian tajuk ke respons sebelum mengirimnya kembali ke pengguna:
return response($content)
->header('Content-Type', $type)
->header('X-Header-One', 'Header Value')
->header('X-Header-Two', 'Header Value');
Atau, Anda dapat menggunakan withHeaders
metode ini untuk menentukan array header yang akan ditambahkan ke respons:
return response($content)
->withHeaders([
'Content-Type' => $type,
'X-Header-One' => 'Header Value',
'X-Header-Two' => 'Header Value',
]);
Cache Control Middleware
Laravel termasuk cache.headers middleware, yang dapat digunakan untuk dengan cepat mengatur Cache-Control header untuk sekelompok rute. Jika etag ditentukan dalam daftar arahan, hash MD5 dari konten respons akan secara otomatis ditetapkan sebagai pengidentifikasi.
Route::middleware('cache.headers:public;max_age=2628000;etag')->group(function() {
Route::get('privacy', function () {
// ...
});
Route::get('terms', function () {
// ...
});
});
Attaching Cookies To Responses
metode cookie
pada contoh response memungkinkan Anda untuk dengan mudah melampirkan cookies untuk respon. Misalnya, Anda dapat menggunakan cookie
metode untuk menghasilkan cookie dan dengan lancar melampirkannya ke contoh respon seperti:
return response($content)
->header('Content-Type', $type)
->cookie('name', 'value', $minutes);
Metode cookie
juga menerima argumen lebih beberapa yang jarang digunakan. Secara umum, argumen ini memiliki tujuan dan makna yang sama dengan argumen yang akan diberikan kepada metode setcookie asli PHP :
->cookie($name, $value, $minutes, $path, $domain, $secure, $httpOnly)
Atau, Anda dapat menggunakan Cookie
fasad untuk "mengantri" cookie untuk lampiran ke respons keluar dari aplikasi Anda. The queue
Metode menerima Cookie
contoh atau argumen yang diperlukan untuk membuat sebuah Cookie
contoh. Cookie ini akan dilampirkan pada respons keluar sebelum dikirim ke browser:
Cookie::queue(Cookie::make('name', 'value', $minutes));
Cookie::queue('name', 'value', $minutes);
Cookie & Enkripsi
Secara default, semua cookie yang dihasilkan oleh Laravel dienkripsi dan ditandatangani sehingga tidak dapat dimodifikasi atau dibaca oleh klien. Jika Anda ingin menonaktifkan enkripsi untuk subset cookie yang dihasilkan oleh aplikasi Anda, Anda dapat menggunakan $except
properti middleware App\HttpMiddlewareEncryptCookies
, yang terletak di direktori app/Http/Middleware
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
'cookie_name',
];