实现移动应用程序web服务的标准方式


Standard way to implement mobile app web services

我是一名PHP开发人员,需要为移动应用程序开发人员实现web服务,以共享帖子、点赞等数据。

实现此类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!',
        ),
    ),
);

但他们建议将所有错误消息作为字符串返回,并且他们只会使用状态参数,如果它为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!',
);

提前感谢

存在数十种web服务协议,其中最著名的是(IMO)SOAP。其中一些是PHP原生支持的,大多数都有开源实现,对于简单的需求来说,所有这些都可能有些过头了。

对于基本的错误处理机制,一个简单的5xxHTTP状态代码就足够了:

<?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客户端都应该处理这种错误情况。有关更多信息,请参阅您的平台手册,或告诉我们有关您的目标移动平台的更多信息。

使用框架。不要推出自己的web服务层。如果你知道你需要滚你自己,然后你有足够的经验来回答这个问题:)

框架选择和要使用的服务协议是下一个显而易见的问题。

协议。。。除非强制使用,否则不要使用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可能也是一个不错的选择。。。

https://laravel.com/docs/5.2

这两个项目的文档都很好。它们很容易使用,您可以使用composer安装它们。。。

记住我说过的关于个人喜好的话。我用过Yii,但没有有问题。你可能会满怀热情地讨厌它。看看这里对Yii有不同的看法,有些人讨厌它…

http://laravel.io/forum/04-29-2015-suggestions-for-technology-stack-choice-laravel-5-vs-yii-2

这家伙写了一本关于Yii的书,现在他更喜欢Laravel。

https://yii2framework.wordpress.com/tag/yii-2-0-vs-laravel/