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

Php 实现移动应用程序web服务的标准方法,php,arrays,web-services,mobile-application,Php,Arrays,Web Services,Mobile Application,我是一名PHP开发人员,需要为移动应用程序开发人员实现web服务,以共享帖子、喜好等数据 实现此类web服务的最佳方式是什么?像这样的东西有标准吗 目前,我确实输出带有消息、内容等的JSON 我与应用程序开发人员的主要问题是关于错误消息。我建议返回一个包含错误代码和消息的数组,以显示: $result = array( 'status' => false, // because registration failed // if reg

我是一名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!',
        ),
    ),
);
但他们建议以字符串形式返回所有错误消息,并且只使用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!',
);
提前感谢,最著名的是(IMO)SOAP。它们本机由PHP支持,大多数都有开源实现,对于简单的需求来说,所有这些都可能是多余的

对于基本的错误处理机制,简单的

<?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 );

}

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

框架选择和使用的服务协议是下一个明显的问题

协议。。。除非被迫使用,否则不要使用SOAP,请使用REST/RPC。REST和RPC都更容易实现,您会发现大多数框架都可以直接实现

框架。。。尽可能选择最简单的方法来避免大量的学习曲线

选择使用哪种技术以及为什么使用,这完全取决于您。您可以在这里找到流行框架的列表

注意,框架中的偏好通常是主观的,即人们(包括我)会建议您使用他们熟悉的东西。如果您有时间,我建议您在多个框架中实现一个基本服务,看看您更喜欢使用哪一个ie。您可以阅读他们的文档并将其安装到您的容器(如Apache/Nginx等)中,这通常是发现您讨厌某个特定框架的一种快速方法

我个人考虑任何需要数据库安装的框架,并将Web页面看作是复杂的。像Drupal这样的东西可能会让人震惊,它有陡峭的学习曲线,因为它拥有一切,如果你只是在构建服务的话,大部分都是不需要的

Yii2非常简单,它有关于实现REST的文档

拉威尔也可能是个不错的选择

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

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

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


我建议你去看看,谢谢你,哈利。是的,我正在使用框架。我曾与CodeIgniter和Laravel合作过,我正在从事的项目是基于CakePHP构建的。在我之前就有开发人员参与这个项目,他们也实现了web服务。但我真的不想像以前那样实现web服务。他们的结构一点也不好。我想尽可能好地实现新的Web服务,我想知道最好的方法是什么。我在问题的主体中提到了一些想法。谢谢。你的问题没有道理。他们要求的似乎是JSON的响应,雕像会告诉他们这是否是错误。如果使用REST,则此
'status'=>为false,
不是指示错误的好方法。应该使用HTTP状态,即HTTP 404==未找到、HTTP 403==禁止等。谢谢。这很有说服力,谢谢你。我读了你介绍的资源。他们打开了我对网络服务的心扉,我认为你的回答值50英镑(甚至更多)。