Как использовать один и тот же «внутренний» код как с веб-приложением Zend, так и с сервером Zend JSON-RPC? - PullRequest
3 голосов
/ 20 декабря 2011

Я собираюсь разработать веб-приложение Zend, которое для визуализации своих представлений будет использовать данные, которые также должны извлекаться через API-интерфейс JSON-RPC, для собственных мобильных приложений. Мне было интересно, как структурировать проект, чтобы эти две части были независимыми. Веб-приложение предназначено для запуска по следующему URL-адресу:

http://www.domainname.com

Затем клиент iOS и Android должен иметь возможность использовать API-интерфейс JSON-RPC, отправляя почтовые запросы на

http://www.domainname.com/api/

Должно ли веб-приложение и API быть двумя отдельными Zend-приложениями или нет? Я скептически отношусь к этому, потому что, поскольку данные, которыми они будут управлять, практически одинаковы, классы обработчиков запросов и контроллеры для веб-приложения будут иметь кучу аналогичного кода для извлечения и манипулирования данными, которые будут возвращены.

Есть ли хороший, чистый и гибкий способ использовать один и тот же «внутренний» код как для JSON-RPC-сервера, так и для веб-приложения?

Я бы хотел избежать дублирования кода, но также сделать вызовы API максимально быстрыми.

Спасибо всем, кто поможет!

1 Ответ

1 голос
/ 20 декабря 2011

На самом деле вы можете достичь этого довольно легко.

Когда контроллер обрабатывает его, используйте ...

if ($this->_request->isXmlHttpRequest())
{
     // Code here
}

Если вы сохраняете данные, процедура может быть такой же.Обычно вы просто используете это, чтобы вернуть представление или JSON.Например ...

// Save the data here

if ($this->_request->isXmlHttpRequest())
{
     die(Zend_Json::encode(array('success' => true)));
}
else
{
     // View specific data here
}

Я надеюсь, что это помогает и имеет смысл!

...