«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Создание лучшего маршрутизатора: обработка скрытых входов и запроса DELETE

Создание лучшего маршрутизатора: обработка скрытых входов и запроса DELETE

Опубликовано 31 июля 2024 г.
Просматривать:652

Creating a Better Router : Handling HIDDEN Inputs and DELETE request

Несколько дней назад я научился создавать базовый маршрутизатор, который сопоставляет URL-адреса с контроллерами. Теперь мне нужно улучшить его, чтобы создать лучший маршрутизатор с расширенными функциями. Чтобы создать лучший маршрутизатор, работающий со скрытыми входами, прежде всего удалите базовый файл router.php из проекта и создайте новый. Давайте начнем.

Введение в маршрутизацию

Нам нужно создать лучший маршрутизатор, который эффективно сопоставляет URL-адреса с конкретными контроллерами или действиями, позволяя нашему приложению обрабатывать запросы и направлять их соответствующим обработчикам.
Способность лучшего маршрутизатора работать со скрытыми входами позволяет безопасно удалять заметки, передавая идентификатор заметки контроллеру, не раскрывая его в URL-адресе, предотвращая вмешательство пользователя.


Создайте файл маршрутизатора

Чтобы создать файл маршрутизатора, нам необходимо инициализировать класс Router с пространством имен, в данном случае Core.





Открытые функции (общие параметры)

Поскольку класс маршрутизатора создан, мы должны определить в нем общедоступные функции, и все они имеют одинаковые параметры, такие как получение, публикация, удаление, исправление и размещение, в качестве основных маршрутов, которые помогают нашему веб-сайту определить, что делать, когда кто-то посещает определенный страница. Эти функции имеют одинаковые параметры, что позволяет им выполнять одни и те же действия.

public function get($uri, $controller) {
 $this->add('GET', $uri, $controller); }
public function post($uri, $controller) {
 $this->add('POST', $uri, $controller); }
public function delete($uri, $controller) { 
$this->add('DELETE', $uri, $controller); }
public function patch($uri, $controller) { 
$this->add('PATCH', $uri, $controller); }
public function put($uri, $controller) { $this->add('PUT', $uri, $controller); }

Добавить метод

Поскольку все общедоступные функции имеют одинаковые параметры, мы используем метод add и присваиваем ему одинаковые параметры и вызываем его только в других функциях. Он используется для добавления нового маршрута в карту маршрутизации, принимая три параметра: метод запроса, соответствующий шаблон URI и файл контроллера для обработки запроса.

public function add($method, $uri, $controller) { 
  $this->routes[] = [ 
    'uri' => $uri, 
    'controller' => $controller, 
    'method' => $method 
  ]; 
}

Метод маршрута

Здесь мы определяем метод маршрута для определения ответа нашего приложения на заданный URL-адрес, сопоставляя его с соответствующим контроллером для обработки запроса.

public function route($uri, $method) { 
  foreach ($this->routes as $route) { 
    if ($route['uri'] === $uri && $route['method'] === strtoupper($method)) { 
      return require base_path($route['controller']); 
    } 
  } 
  $this->abort(); 
}

функция strtoupper

В методе маршрута мы используем функцию strtoupper для преобразования строки в верхний регистр, обеспечивая совпадение без учета регистра.

strtoupper($method)

Защищенная функция (прерывание)

В файле router.php мы определили метод прерывания как страховочную сеть, отображающую страницу с ошибкой, если наш веб-сайт не может найти правильный маршрут.

protected function abort($code = 404) { 
  http_response_code($code); 
  require base_path("views/{$code}.php"); 
  die(); 
}

Определения маршрутов

Последнее, что нужно сделать, это определить конфигурацию маршрутизации в файле Routes.php, сопоставляя URL-адреса с соответствующими действиями контроллера.

$router->get('/', 'controllers/index.php'); 
$router->get('/about', 'controllers/about.php'); 
$router->get('/contact', 'controllers/contact.php'); 
$router->get('/notes', 'controllers/notes/index.php'); 
$router->get('/note', 'controllers/notes/show.php'); 
$router->get('/notes/create', 'controllers/notes/create.php');

Метод get определяет метод запроса (GET), шаблон URL-адреса и сопоставляет его с файлом контроллера.

Заключение

В заключение мы создали более совершенный маршрутизатор, который эффективно сопоставляет URL-адреса с конкретными методами контроллера, обеспечивая более структурированный и удобный подход к обработке запросов и улучшая общую производительность и масштабируемость нашего веб-сайта.

Надеюсь, вы это ясно поняли.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/ghulam_mujtaba_247/creating-a-better-router-handling-hidden-inputs-and-delete-request-ei7?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с Study_golang@163 .com, чтобы удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3