实现移动应用程序Web服务的标准方法

时间:2016-03-24 11:43:50

标签: php arrays web-services mobile-application

我是一名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!',
);

提前致谢

2 个答案:

答案 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可能也是一个不错的选择......

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/