【发布时间】:2016-04-17 01:04:18
【问题描述】:
我正在使用 Phil Sturgeon 的 REST 服务器、CI3 和 POSTMAN 进行调试。我发送了一个包含以下信息的 PUT,但是,我没有收到预期的错误消息。
这是我的 form_validation.php:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config = array(
'student_put' => array(
array('field' => 'email_address', 'label' => 'email_address', 'rules' => 'trim|required|valid_email'),
array('field' => 'password', 'label' => 'password', 'rules' => 'trim|required|min_length[8]|max_length[16]'),
array('field' => 'first_name', 'label' => 'first_name', 'rules' => 'trim|required|max_length[50]'),
array('field' => 'last_name', 'label' => 'last_name', 'rules' => 'trim|required|max_length[50]'),
array('field' => 'phone_number', 'label' => 'phone_number', 'rules' => 'trim|required|alpha_dash'),
)
);
?>
这是我在控制器 Api.php 中的方法:
function student_put(){
$this->form_validation->set_data($this->put());
// these are the rules set in config/form_validation.php
if ($this->form_validation->run('student_put') != FALSE) {
die('good data');
} else {
$this->response(
array(
'status'=> 'failure',
'message'=> $this->form_validation->get_errors_as_array(),
),
REST_Controller::HTTP_BAD_REQUEST
);
}
}
这是在我的库文件夹中的 MY_Form_validation.php:
<?php
class MY_Form_validation extends CI_Form_validation {
function __construct($rules = array()) {
parent::__construct($rules);
$this->ci =& get_instance();
}
public function get_errors_as_array() {
return $this->_error_array;
}
public function get_config_rules() {
return $this->_config_rules;
}
public function get_field_names($form) {
$field_names = array();
$rules = $this->get_config_rules();
$rules = $rules[$form];
foreach ($rules as $index=> $info) {
$field_names[] = $info['field'];
}
return $field_names;
}
}
当我在 POSTMAN 中添加以下内容时:
X-API-KEY 123456
first_name test
email_address abc
这是我得到的结果:
{
"status": "failure",
"message": []
}
但我应该得到验证错误。
作为调试步骤,我已经确认: - 没有身份验证错误 - form_validation.php 正在被读取 - 如果我改变:
'message'=> $this->form_validation->get_errors_as_array(),
到
'message'=> 'test',
邮递员返回:
{
"status": "failure",
"message": "test"
}
非常感谢任何帮助。
【问题讨论】:
-
application/config/rest.php 中的设置是什么?
-
您具体指的是哪个设置。我想我应该避免将输入文件发布得太长。
-
$config['rest_auth'] 和 $config['rest_enable_keys'] 的设置是什么?
-
我在上面运行键表中的键。 $config['rest_auth'] = FALSE;$config['rest_enable_keys'] = TRUE;$config['rest_key_column'] = 'key';当我在没有 X-API-KEY 的情况下运行 PUT 时,我得到了预期的 403 错误。当我插入正确的 X-API-KEY 时,我得到 200。
-
刚发现我可能收不到PUT提交的数据。我使用 POSTMAN 并制作了一个 KEY/VALUE 对 first_name 和 'Richard'。我假设我可以捕捉到这样的日期: $data = array('email_address' => $this->put('email_address')); ... 或 ... 像这样回显: print_r($this->put('email_address'));不幸的是,没有捕获或显示任何内容。任何帮助表示赞赏。
标签: php codeigniter rest codeigniter-restserver