Разработка API: несколько $ _REQUEST против одного $ _REQUEST, закодированные в json - PullRequest
0 голосов
/ 28 января 2011

Я строю API, и я нахожусь на распутье, как его реализовать. Я планирую использовать json, поскольку они так легко могут представлять объекты / массивы в php и javascript.

У меня есть два способа реализовать это:

1) Включить вызов метода в json

$input = $_REQUEST['i'];
$i_obj = json_decode($input);
api_handle($i_obj);

2) Переместите вызов метода (и, возможно, другие переменные, такие как сеанс) параллельно, и просто извлеките данные через $ _REQUEST.

$method = $_REQUEST['m'];
$argv = json_decode($_REQUEST['argv']);
api_handle($method,$argv);

Я вижу, что во втором случае может быть меньше для отладки json_decode, но с точки зрения пользователя, ajax / js-кодировщик может просто построить объект и отправить его json_encoded через ввод "i" .

В конце концов, у меня вопрос: есть ли один из этих хороших способов реализовать это, или, может быть, есть еще лучший способ? Пожалуйста, имейте в виду, что это простой пример, и он не представляет остальную часть объема проекта для этого API.

1 Ответ

1 голос
/ 03 октября 2011

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

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