Requests і Responses в CodeIgniter 4

Requests і Responses в CodeIgniter 4

Лонні Эцелл (Brice Ezell), основний розробник CodeIgniter 4, поділився у своєму блозі інформацією про новий функціонал четвертої версії фреймворка.

Одним з найбільших змін в CodeIgniter 4 є спосіб введення та виведення даних, які обробляються. В попередніх версіях, в тому числі останніх версіях Codeigniter 3x, на вході і виході для обробки даних були задіяні два класи, які містили в основному пов'язану функціональність — це клас Output і Input.

В CodeIgniter 4 HTTP шар змодельований набагато більш тісно і побудована нова ієрархія класів для представлення спільних запитів і відповідей HTTP.

IncomingRequest
Клас IncomingRequest забезпечує доступ до запитів HTTP і всіма даними на стороні, які йдуть з ним, у тому числі:

  • GET, POST, SERVER і ENV змінні
  • Заголовки
  • Печеньки (Куки)
  • Об'єкти URL
  • Завантажені файли
Та надає зручні методи для таких речей, як:

  • IP-адреса клієнта
  • Був це AJAX-запит?
  • Був це запит CLI?
  • Відбувається все через HTTPS?
Тут вже інший клас запитів, який є більш універсальним і не знає подробиць-запиту HTTP, який містить такі речі як GET і POST змінні. Запит може бути одним з двох: вхідний запит, про те, що браузер клієнта відправив на сервер, і виходить, що посилається на зовнішній сервер.

Response
Клас відповіді, який використовується для того, щоб побудувати свій відповідь клієнту. Тут можна призначити заголовки, встановити вихід безпосередньо, і багато іншого. Він надає зручні методи для таких речей, як:

  • Встановлення відповідних не кешу заголовків
  • Робота з заголовками кешування HTTP
  • Переспрямування на нову сторінку

Приклад використання:

Контролер вже має примірник класів в якості властивостей, але для простої роботи, не потрібно їх використовувати ніколи. Будь-який вихід з контролера фіксується і автоматично встановлюється в якості тіла відповіді.

class Home extends \CodeIgniter\Controller
{
public function index()
{
echo "Hello World!";
}
}

З'явиться можливість створювати складні стратегії кешування HTTP, вибудовувати роботу з вхідним запитом і багато іншого.

class Home extends \CodeIgniter\Controller
{
public function __construct(...$params)
{
parent::__construct(...$params);

// Цей контролер доступний тільки через HTTPS
if (! $this->request->isSecure())
{
// // Переадресувати користувача на цю сторінку з допомогою HTTPS, і встановити HSTS
// заголовок так, що браузер буде автоматично перетворювати всі посилання на цю сторінку з HTTPS
// протягом наступного року
force_https();
}
}

public function index()
{
$data = [
...
];

// Встановлення деяких правил кешування HTTP для цієї сторінки.
$this->response->setCache([
'max-age' => 300,
's-max-age' => 900,
'etag' => 'foo'
]);

// Повернення JSON
$this->response->setContentType('application/json')
->setOutput(json_encode($data));
}
}


У цьому прикладі, були зроблені три основні речі:

  1. Ми змусили цю сторінку отримати доступ через HTTPS обома перенаправлениями на версію HTTPS поточного URL, а також шляхом створення заголовка Strict-Transport-Security, який підтримується більшістю основних виробників браузерів і дозволяє браузеру перетворити URL HTTPS автоматично перед відправкою запиту.
  2. Справили установку деяких правила кешування HTTP, щоб допомогти браузеру знати, коли він може повторно використовувати дані, які він вже має. Це означає меншу кількість HTTP-запитів і збільшення продуктивності завантаження.
  3. Зробили висновок деяких необхідних даних у форматі JSON.
Варто також відзначити, що Lonnie Ezell пообіцяв ділитися короткими оглядами про новий функціонал фреймворку кожні кілька тижнів.


Посилання по темі:
CodeIgniter Wikipedia: ru.wikipedia.org/wiki/CodeIgniter
Офіційний сайт CodeIgniter: www.codeigniter.com
Офіційний форум CodeIgniter: forum.codeigniter.com
Блог Лонні Эцелла: Requests і Responses in Codeigniter 4
HSTS: https://ru.wikipedia.org/wiki/HSTS
CLI: https://ru.wikipedia.org/wiki/Call_Level_Interface
CodeIgniter 4: https://habrahabr.ru/post/275657/
CI Community Apps: https://habrahabr.ru/post/276375/

Джерело: Хабрахабр
  • avatar
  • 0

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.