Я разработчик PHP, и мне нужно реализовать веб-сервисы для разработчиков мобильных приложений для обмена данными, такими как публикации, лайки и т. Д.
Каков наилучший способ реализации таких веб-сервисов? Есть ли стандарт для таких вещей?
В настоящее время я делаю вывод JSON с сообщениями, содержимым и так далее.
Моя основная проблема с разработчиками приложений связана с сообщениями об ошибках. Я предлагаю вернуть массив с кодами ошибок и сообщениями, чтобы показать:
$result = array(
'status' => false, // because registration failed
// if registration succeed then would be true
'errors' => array(
array(
'code' => '1',
'message' => 'Password is not strong enough!',
),
array(
'code' => '2',
'message' => 'Password and password confirmation do not match!',
),
array(
'code' => '3',
'message' => 'This email address has been used!',
),
),
);
Но они предлагают возвращать все сообщения об ошибках в виде строки, и они будут использовать только параметр состояния, и если он был ложным, то покажет сообщение, что-то вроде этого:
$result = array(
'status' => false,
'message' => 'Password is not strong enough!' . PHP_EOL .
'Password and password confirmation do not match!' . PHP_EOL .
'This email address has been used!',
);
заранее спасибо
Существуют десятки протоколов веб-сервисов, самым известным из них является (IMO) SOAP. Некоторые из них изначально поддерживаются PHP, большинство из них имеют реализации с открытым исходным кодом, и все они могут быть излишними для простых требований.
Для базового механизма обработки ошибок, простой 5xx код состояния HTTP может хватить:
<?php
define('HTTP_CUSTOM_ERROR_CODE', 599);
define('HTTP_CUSTOM_ERROR_REASON', 'Something wrong is going on');
if( somethingWrong() ) {
header(
sprintf('%s %s %s',
$_SERVER['SERVER_PROTOCOL'],
HTTP_CUSTOM_ERROR_CODE,
HTTP_CUSTOM_ERROR_REASON
),
true,
HTTP_CUSTOM_ERROR_CODE
); // sends HTTP header "HTTP/1.1 599 Something wrong is going on"
echo $errorMessage; // or echo json_encode( $structuredErrorData );
die();
} else {
echo json_encode( $response );
}
Согласно спецификациям протокола HTTP, любой HTTP-клиент должен обрабатывать это условие ошибки. Для получения дополнительной информации обратитесь к руководству по вашей платформе или расскажите подробнее о вашей целевой мобильной платформе.
Используйте рамки. Не катите свой собственный слой веб-сервиса. Если вы знаете, что вам нужно
катите сами, тогда у вас достаточно опыта, чтобы ответить на этот вопрос 🙂
Выбор платформы и использование Сервисного протокола — следующие очевидные вопросы.
протокол… не используйте SOAP, если только вы не вынуждены его использовать, используйте REST / RPC. И REST, и RPC проще в реализации, и большинство фреймворков, которые вы найдете, могут работать как из коробки.
Фреймворк… выберите самое простое, что вы можете, чтобы избежать массивной кривой обучения, т.е.
Выбор того, какую технологию использовать и почему действительно зависит от вас. Вы можете найти список популярных фреймворков здесь
http://www.sitepoint.com/best-php-framework-2015-sitepoint-survey-results/
Обратите внимание, что предпочтения в рамках довольно часто субъективны, то есть люди (включая меня) предложат вам использовать то, с чем они знакомы. Если бы у вас было время, я бы посоветовал вам внедрить базовый сервис в нескольких средах, чтобы увидеть, с каким из них вы предпочитаете работать, т.е. вы можете прочитать их документы и установить его в свой контейнер, например, Apache / Nginx и т. Д., Это довольно быстрый способ чтобы узнать, что вы ненавидите определенные рамки.
Я лично рассматриваю любую среду, которая требует базы данных для ее установки, и вижу веб-страницу как сложную. Что-то вроде Drupal может быть шоком, у него крутая кривая обучения, потому что в нем есть все, большая часть которого вам не понадобится, если вы просто создаете сервисы.
Yii2 довольно прост, и у него есть документы по реализации REST …
http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html
Laravel также может быть хорошим выбором …
Документы довольно хороши в обоих этих проектах. Они просты в использовании, и вы можете установить их с помощью композитора …
Помните, что я сказал о личных предпочтениях. Я использовал Yii и не имел
проблемы с этим. Вы можете ненавидеть это со страстью. Посмотрите здесь совсем другое мнение о Yii, некоторые люди ненавидят его …
http://laravel.io/forum/04-29-2015-suggestions-for-technology-stack-choice-laravel-5-vs-yii-2
Этот парень написал книгу о Yii, и теперь он предпочитает Laravel.