Маршрутизатор Scrawler и маршрутизация RESTful

Что такое маршрутизатор RESTful?

Основная идея заключается в том, что вместо того, чтобы полагаться исключительно на URL-адрес для указания того, на какую веб-страницу вы хотите перейти (и использовать только один метод), это комбинация ГЛАГОЛА и URL-адреса. Таким образом, один и тот же URL-адрес при использовании с другим глагол (например, GET, PUT, POST, DELETE) перенесет вас на другую страницу. Это обеспечивает более чистые и короткие URL-адреса и особенно адаптировано для приложений CRUD, которыми является большинство веб-приложений.

Согласно википедии:

Representational State Transfer (REST) ​​— это архитектурный стиль программного обеспечения, который определяет набор ограничений, используемых для создания веб-сервисов. Веб-службы, соответствующие архитектурному стилю REST, называемые веб-службами RESTful, обеспечивают взаимодействие между компьютерными системами в Интернете. Веб-службы RESTful позволяют запрашивающим системам получать доступ к текстовым представлениям веб-ресурсов и управлять ими с помощью унифицированного и предопределенного набора операций без сохранения состояния. Другие типы веб-служб, такие как веб-службы SOAP, предоставляют свои собственные произвольные наборы операций.[1]

Представляем Scrawler Router (автоматический Restful Router для PHP):

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

Почему Scrawler-маршрутизатор?

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

Монтаж

Использование композитора

composer require scrawler/router

Начиная

В вашем index.php

<?php

use Scrawler\Router\RouteCollection;
use Scrawler\Router\Router;
use Symfony\Component\HttpFoundation\Response;


$dir = /path/to/your/controllers;
$namespace = Namespace\of\your\controllers;

$router = new Router(new RouteCollection($dir,$namespace));





$response = $router->dispatch();





$response->send();

Сделано сейчас, какой бы запрос ни возник, он будет автоматически маршрутизирован. Вы не определили ни одного маршрута

Как это работает?

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

<?php


class Hello{

public function getWorld(){
return "Hello World";
}

}

сейчас звоню localhost/hello/world в вашем браузере вы увидите hello world на вашем экране.

Как это делается автоматически?

Каждый запрос к серверу интерпретируется призрачным маршрутом следующим образом:

METHOD /controller/function/arguments1/arguments2

Контроллер и функция, которые будут вызываться, будут

<?php

class controller{

public function methodFunction(arguments1,arguments2){

}

}

Например, следующий вызов:

GET /user/find/1

будет вызывать следующий контроллер и метод

<?php

class User{

public function getFind($id){

}
}

В приведенном выше примере 1 будет передан в качестве аргумента $id

Как я должен назвать свою функцию для автоматической маршрутизации?

Имя функции в контроллере должно быть названо в соответствии со следующим соглашением:
methodFunctionname
Примечание. Метод всегда следует писать маленькими буквами, а первое слово имени функции всегда должно начинаться с заглавной буквы.
Метод — это метод, используемый при вызове URL. Допустимые методы:

all - maps any kind of request method i.e it can be get,post etc
get - mpas url called by GET method
post - maps url called by POST method
put - maps url called by PUT method
delete - maps url called by DELETE method

Некоторые напр. допустимых имен функций:
getArticles, postUser, putResource
Недопустимые имена функций:
GETarticles, Postuser, PutResource

Конфигурация сервера

Апачи

Возможно, вам потребуется добавить следующий фрагмент в конфигурацию виртуального хоста HTTP-сервера Apache или .htaccess файл.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ /index.php/$1 [L]

В качестве альтернативы, если вам посчастливилось использовать версию Apache выше 2.2.15, вы можете вместо этого просто использовать эту одну строку:

FallbackResource /index.php

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *