1

私のRESTアプリケーションでは、jsonオブジェクトをAPIサーバーに送信しようとしています.サーバーはデータを検証して、すべてが期待どおりに進んでいることを確認する必要があります.

API サーバーで検証を行うコントローラー

$this->load->model('api/central');
$this->load->library('form_validation');

//validation rules
$this->form_validation->set_error_delimiters('', '');
$this->form_validation->set_rules('id', 'id', 'required|numeric');
$this->form_validation->set_rules('manager', 'manager', 'required|numeric');
$this->form_validation->set_rules('department', 'department', 'required');
$this->form_validation->set_rules('level', 'level', 'required|numeric');


if ($this->form_validation->run() === FALSE) {

    $employeeId = $this->form_validation->error('id') ? $this->form_validation->error('id') : $this->post('id');
    $manager = $this->form_validation->error('manager') ? $this->form_validation->error('manager') : $this->post('manager');
    $department = $this->form_validation->error('department') ? $this->form_validation->error('department') : $this->post('department');
    $level = $this->form_validation->error('level') ? $this->form_validation->error('level') : $this->post('level');

    $response = array(
        'status' => FALSE,
        'error' => 'We don\'t have data to display, Minimum information required to process the request is missing',                
        'authenticated' => TRUE,                
        'id' => $employeeId,
        'manager' => $manager,
        'department' => $department,
        'level' => $level                
    );

    $this->response($response, 200);

} else {

    $response = $this->central->calls_get($this->post('id'), $this->post('manager'), $this->post('department'), $this->post('level'));
    $this->response($response, 200);
}

$this->post('id'), $this->post('manager'), $this->post('department'), $this->post('level')送信された値を返すが、form_validation ライブラリは期待どおりに送信されているにもかかわらず、常にデータの検証に失敗する問題

以下は 、http-header ('content-type') = 'application/json' という有用な http 情報と、{"id":"1", "manager": "1 のような json オブジェクトとして post 経由で送信されるデータです。 ", "部門":"営業", "レベル":"1"}

4

1 に答える 1

0

何が問題なのかわかりませんが、次の呼び出しを行うと、デバッグで提案できます。

echo validation_errors();

多くの場合、有益な情報を提供します。

于 2013-09-28T02:38:30.980 に答える