как обработать php REST url ресурсы - PullRequest
1 голос
/ 12 января 2011

Я читал много о REST API в статьях PHP. но я все еще запутываюсь.

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

но как правильно обрабатывать URL? это выглядит не правильно ...

  1. возьми ури и раздели его
  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)

Ответы [ 2 ]

3 голосов
/ 12 января 2011

Правильный способ справиться с этим - иметь такие 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
0 голосов
/ 12 января 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...