ZF2休息api编码风格(驼峰式或下划线)

时间:2015-02-24 10:21:19

标签: php api rest zend-framework2

我正在编写带有以下代码的代码,用于休息api

我认为,在控制器中完成验证,服务层关心编写业务逻辑和模型,负责数据库操作。我希望我是对的。

我在此澄清的是,我是否可以将var_id(以下划线分开)发送到服务层或varID(驼峰式)。

我搜索了很多api次来电,其中大多数是var_id,这也是我自己使用的原因。

但是我如何在这里使用变量,因为zend框架代码适用于camel-case,如果为每个变量分配变量varID = var_id,是不是正确。

$dataSendToService = array(
    $varID = var_id,
    $varID2 = var_id2;
);

我在create方法中调用api,如下所示。

http://128.12.788.88/api/v1/users/72

json得到这样的方法

{
    "var_id":"var_value",
    "var_id1":"var_value1"
}

在控制器中:

function create() {

    $body = $this->getRequest()->getContent();

    $data = json_decode($body); 
    $id  = $this->params('id');

    //validation
    if( !isset( $data->pat_id ) || empty( $data->pat_id ) ) {
        $resp = array(
            'status' => 'failure',
            'errorCode' => 531, 
            'errorMessage' => 'Patient ID should not be empty'
        );
        return new JsonModel($resp);
    }


    if( !isset( $data->doc_id ) || empty($data->doc_id )) {
        $resp = array(
            'status' => 'failure', 
            'errorCode' => 532, 
            'errorMessage' => 'Doctor ID should not be empty'
        );
        return new JsonModel($resp);
    }

    if( !isset( $data->apt_time ) || empty($data->apt_time )) {
        $resp = array(
            'status' => 'failure',
            'errorCode' => 533, 
            'errorMessage' => 'Appointment time should not be empty');
        return new JsonModel($resp);
    }

    if( !isset( $data->apt_subject ) || empty($data->apt_subject )) {
        $resp = array(
            'status' => 'failure', 
            'errorCode' => 534, 
            'errorMessage' => 'Appointment Subject time should not be empty');
        return new JsonModel($resp);
    }

    $sm = $this->getServiceLocator();
    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
    $usersService = new UsersService($dbAdapter);
    $resp = $usersService->profile($data,$id);

}

在服务中:

function create() {

    //get the data and pass it to model

}

模特:

function create() {

    //get the data and insert in table and return the result       

}

1 个答案:

答案 0 :(得分:0)

ZF2中使用下划线分隔值是完全正确的,但实际上骆驼套管似乎是更常见的做法。

您绝对不必手动执行所有操作,您可以轻松使用过滤器将json变量更改为驼峰式案例:

use Zend\Filter\Word\CamelCaseToUnderscore;

...

$filter = new CamelCaseToUnderscore();
print $filter->filter('ThisIsMyContent');

回到下划线:

use Zend\Filter\Word\CamelCaseToDash;

...    

filter = new CamelCaseToDash();
print $filter->filter('ThisIsMyContent');

如果您使用hydrator,则可以使用the ZF2 ClassMethods水分器,可以通过将布尔值传递给构造函数来设置为extracthydrate

underscore-separated(true)或camel-case(false)

use Zend\Stdlib\Hydrator\ClassMethods;

...

$boolean = true|false;
$hydrator = new ClassMethods($boolean)