2010-04-22 1 views
4

Меня попросили помочь компании друга создать веб-приложение. У меня очень ограниченное время, и я с неохотой принял просьбу при одном условии. Поскольку основная часть логики идет в фоновом режиме, я предположил, что я полностью закончу полный back-end , позволяя разработчику интерфейса просто взаимодействовать с моим бэкэнд.Самый простой способ клиента RPC в PHP

Я планирую сделать back-end в Java EE или Python (с помощью Pylons). На данный момент это не имеет значения. Я планирую, что мой back-end полностью готов и проверен подразделением, так что мой ввод вряд ли понадобится после моей работы.

Я знаю, что у них есть PHP-программист, но насколько я мог сказать, он настоящий новобранец. Я хочу, чтобы он в основном взаимодействовал с услугами моего бэкэнда самым легким способом, никоим образом не «наполнил» его. Это в основном CRUD-приложение.

Я мог бы реализовать бэкэнд как доступный через веб-сервис, такой как XML-RPC или SOAP. Возможно даже API RESTful.

Однако, моя главная цель - сделать что-то, что полный программист PHP «noob» может легко взаимодействовать, не запутываясь. Я даже не хочу разговаривать с ним, потому что у меня обычно очень напряженный график, и делать «призывы поддержки» - это не то, что я готов сделать. Какой подход выбрать? Я бы приветствовал любые предложения и материалы!

ответ

5

Я лично выбрал бы REST API, возможно, с ответом JSON. SOAP и XML могут быть немного тяжелыми для простых сервисов, и даже самый начинающий веб-разработчик понимает концепцию доступа к базовому URL-адресу, даже если они не задирают общую концепцию REST. Есть множество способов работать с URL-адресами в PHP, поэтому я уверен, что они смогут что-то придумать, даже если это была проблема с взломом, а не с хорошим клиентским пакетом.

Я бы также выбрал кодирование и декодирование JSON, так как это довольно просто, в то время как синтаксический анализ XML может быть немного более сложным.

Я бы также написал хотя бы некоторую базовую документацию по обслуживанию, независимо от того, какие форматы вы выберете. В противном случае вы не сможете избежать вызовов поддержки. Ваш целевой потребитель должен иметь ссылку на доступные ему удаленные действия или метод обнаружения этих действий. Вероятно, вам понадобится 10 минут, чтобы взломать примерный код, когда он будет готов, и эти 10 минут могут сэкономить вам много электронной почты.

+0

+1 на REST, +2 на JSON, +3 на документе это .... теперь я должен вам 5 баллов ... – Javier

+0

Хорошая идея. Я убежден, что я использую RESTful API на этом. Что касается базовой документации, у нас будет документ требований с макетами скриншотов и всего, поэтому он не может ошибиться с этим. Что касается JSON против params через строки запроса GET/POST, я думаю, что последнее, мне придется подумать об этом. Спасибо! –

2

Определенно переходите с реализацией, подобной отдыху, и возвращайте результат форматирования строки запроса.

Просто помните, что php превратит массив как переменные в массив на стороне php.

Возьмите строку запроса для параметров

Вход: p1=v1&p2=v2....

Выход: output1=var1&output[0]=var2;output[2]=var3

Доступ к это в PHP тогда просто, как

<? 
    $request['myparam1'] = param; 
    ... 
    $webService ="http://path.to.service?".http_build_query($request); 

    parse_str(file_get_contents($webService),$response); 

    // response is now an array with you response parameters in it 
    // $response['responseParam1'], reponse['responseParam1'] etc 
?> 
+1

проще и более предсказуемым с обеих сторон просто использовать JSON – Javier

+0

Спасибо Byron. Я все еще застрял между решением вопроса о том, стоит ли искать parse_str и JSON. Я должен буду немного подумать. –

2

был там, сделал это.

Бэкэнд в Django, интерфейс в PHP от подрядчика «мы делаем страницы». Я взломал REST-подобный API с помощью JSON, предоставил им пару 5-строчных функций PHP для доступа к моей службе в качестве хранилища ключей.

После нескольких ложных запусков (там, где они пытались создать надуманную и перенаправленную схему вместо использования функций, которые я их отправил), они получили ее, и после этого все прошло гладко.

+0

Думаю, я решил пойти сейчас на JSON. :) –