Как получить часть адреса (URL), которая идет после доменного имени?

Как в API на PHP правильно определить метод и тип ресурса, когда файлы functions.php и index.php используются для вызова функций и обработки запросов? Как можно улучшить процедуру определения типа запроса и метода, используя фрагмент кода, в котором переменная $type определяется через $_GET['q'] и далее разделяется для получения основного типа и, при необходимости, дополнительного типа?
  • 18 мая 2024 г. 19:50
Ответы на вопрос 2
1. Для получения части адреса (URL), которая идет после доменного имени, можно воспользоваться глобальной переменной $_SERVER['REQUEST_URI']. Например, если URL вашего сайта имеет вид "http://example.com/page", то $_SERVER['REQUEST_URI'] вернет "/page".

2. Для определения метода и типа ресурса в API на PHP можно использовать параметры запроса (GET или POST). Например, если в URL передается параметр "action", который определяет метод, а также параметр "type", определяющий тип ресурса, можно выполнить следующий код:

```php
if(isset($_GET['action']) && isset($_GET['type'])) {
    $action = $_GET['action'];
    $type = $_GET['type'];
    
    // Обработка запроса в зависимости от метода и типа ресурса
    if($action == 'get' && $type == 'users') {
        // Логика для получения информации о пользователях
    } elseif($action == 'post' && $type == 'products') {
        // Логика для добавления товаров
    }
}
```

3. Для улучшения процедуры определения типа запроса и метода можно использовать динамическое создание переменных с помощью $$, разделение строки на основной тип и дополнительный тип с помощью explode() и дополнительной проверки. Например:

```php
$q = $_GET['q'];
list($mainType, $subType) = explode('/', $q);

if(isset($mainType) && isset($subType)) {
    $action = ${$mainType};
    $type = ${$subType};

    // Обработка запроса в зависимости от метода и типа ресурса
    if($action == 'get' && $type == 'users') {
        // Логика для получения информации о пользователях
    } elseif($action == 'post' && $type == 'products') {
        // Логика для добавления товаров
    }
}
```
Похожие вопросы