Wed Dec 2019 2 years ago

Memahami HTTP Responses (Attaching Headers To Responses, Attaching Cookies To Responses, Cookies & Encryption) Pada Laravel 5

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 headermetode 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 withHeadersmetode 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 Cookiefasad untuk "mengantri" cookie untuk lampiran ke respons keluar dari aplikasi Anda. The queueMetode menerima Cookiecontoh 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',
];

 

belajar laravel tutorial laravel laravel http responses