我是一名PHP开发人员,需要为移动应用程序开发人员实现Web服务,以共享帖子,喜欢等数据。
实施此类网络服务的最佳方式是什么?这样的东西有标准吗?
目前我输出的是带有消息,内容等的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!',
),
),
);
但他们建议将所有错误消息作为字符串返回,并且他们只使用status参数,如果它是false,则会显示消息,如下所示:
$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!',
);
提前致谢
答案 0 :(得分:2)
Dozens of web-services protocols exist,最着名的是(IMO)SOAP。 PHP本身支持Some of them,其中大部分都有可用的开源实现,所有这些实现对于简单的需求可能都是过度的。
对于基本的错误处理机制,简单的5xx HTTP status code就足够了:
<?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客户端都应该处理此错误情况。有关详细信息,请参阅平台手册,或者告诉我们有关您的目标移动平台的更多信息。
答案 1 :(得分:1)
使用框架。不要推出自己的Web服务层。如果你知道你需要 滚动你自己然后你有足够的经验回答这个问题:)
使用框架选择和服务协议是下一个显而易见的问题。
协议 ...除非被迫使用SOAP,否则不要使用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可能也是一个不错的选择......
这两个项目的文档相当不错。它们易于使用,您可以使用composer安装它们......
记住我所说的个人喜好。我使用过Yii但没有 它的问题。你可能会充满激情地讨厌它。看看这里对Yii的一个非常不同的看法,有些人讨厌它......
http://laravel.io/forum/04-29-2015-suggestions-for-technology-stack-choice-laravel-5-vs-yii-2
这家伙写了一本关于Yii的书,现在他更喜欢Laravel。