2015-02-24 60 views
0

我寫在休息api的墊子下面的代碼。ZF2 REST API編碼風格(駝峯或下劃線)

我認爲,在驗證完成控制器和編寫業務邏輯和模式的業務層關心照顧的數據庫操作。我希望我是正確的。

我在此澄清我是否可以將var_id(以下劃線分隔)發送到服務層或以varID(camel-case)發送。

我搜索了很多api的電話,其中大部分都是var_id,這也是我用我自己的原因。

但是我怎樣才能在這裏使用變量,因爲zend框架代碼與駝峯案例,如果我爲每個變量分配變量varID = var_id,是對的。

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

我在創建方法中調用api,如下所示。

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

JSON get方法這樣

{ 
    "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  

} 

回答

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(真)或camel-case(假)

use Zend\Stdlib\Hydrator\ClassMethods; 

... 

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