как обрабатывать ресурсы URL-адреса Rp

Я читал много о REST api в статьях php. но я все равно запутаюсь.

они в основном переписывают URL-адрес index.php, который обрабатывает URL-адрес и зависит от метода, затем посылает ответ

но который является правильным способом обработки URL-адреса? это выглядит неправдой …

  1. получить uri и разделить его
  2. Я должен знать, что делать с каждой частью, например. для GET / usr / 1 Я должен сделать что-то вроде:
    если ($ myUri [0] == "USR")
    GetUser ($ myUri [1]);

если URL-адрес запроса похож на GET www.domain.com/user/1 он будет называть getUser($id); но что произойдет, если вы также можете получить пользователя по имени или, возможно, по электронной почте? поэтому URL-адрес также может быть www.domain.com/user/john или www.domain.com/user/john@gmail.com и каждый url должен вызывать различные методы, такие как getUsrByName($name) или getUsrByEmail($mail)

Правильный способ обращения с этим был бы иметь такие URL-адреса:

 domain.com/user/id/1 -> user::getById domain.com/user/email/foo@bar.com -> user::getByEmail domain.com/user/username/foo -> user::getByUsername 

Однако указание нескольких «параметров» больше похоже на поиск, я бы против использования ресурсов для этого, потому что путь должен быть абсолютным. Что значит:

 domain.com/user/name/Kossel/likes/StackOverflow 

А также:

 domain.com/user/likes/StackOverflow/name/Kossel 

Не тот же ресурс. Вместо этого я бы сделал:

 domain.com/user/?name=Kossel&likes=StackOverflow 

Это то, что использует переполнение стека:

 stackoverflow.com/questions/tagged/php stackoverflow.com/tags/php/new stackoverflow.com/questions/tagged/mysql?sort=featured 

Чтобы избежать длинного оператора if / else, используйте имена переменных. это позволяет использовать строку url для вызова правильной функции.

http://php.net/manual/en/functions.variable-functions.php

Кроме того, вы можете использовать методы класса / класса вместо функций. таким образом вы можете настроить функцию __autoload, которая позволит вам загружать только код, который вы собираетесь использовать при каждом вызове index.php.

Архитектура MVC обычно разбивает свои URL-адреса на / class_name / class_method_name / arguments …