使用codeigniter在REST API中发布方法

时间:2016-01-04 18:27:27

标签: codeigniter api rest postman

当我使用以下方法并将正文密钥作为fail(未定义的密钥)传递时,某些值返回pass消息并且空行被插入表中,如何验证?

我在REST API中使用的函数,

function categories_POST() {
    $title = $this->post('title');
    $no = $this->post('no');
    $id= $this->post('id');

    $this->load->model('model_check');
    $msg = $this->model_check->addDetails($title , $no , $id);
    $this->response($msg);
}

我的模特,

function addDetails($x, $y, $z) {
    $check = "INSERT INTO categories (title,no,id) VALUES ('$x','$y','$z')";
    $query = $this->db->query($check);
    if($this->db->affected_rows() > 0) {
        return "pass";
    } else {
        return "fail";
    }
}

2 个答案:

答案 0 :(得分:1)

老实说,你最好使用查询构建器和(取决于你遵循的样式(胖/瘦控制器/模型))让模型处理$this->post()进行处理。

这是Phil Sturgeons / Chris A的休息服务器吗?

类似的东西:

function categories_post() {  // doesn't need to be POST()

    $this->load->model('model_check');
    $msg = $this->model_check->addDetails()
    if ($msg)
    {
        $this->response([
            'status'            => TRUE,
            'message'           => 'pass'
          ], REST_Controller::OK);
    }
    // default to fail
   $this->response([
        'status'            => FALSE,
        'message'           => 'fail'
      ], REST_Controller::HTTP_BAD_REQUEST);
}

你的模特,

function addDetails() {
    // this only checks to see if they exist
    if (!$this->post() || !$this->post('x') || !$this->post('y') || !$this->post('z')) {
        return false;
    };
    $insert = array(
      'x' => $this->post('x'),
      'y' => $this->post('y'),
      'z' => $this->post('z'),
    );


    if($this->db->insert('categories', $insert))
    {
        return true;

    } 
    return false;  // defaults to false should the db be down

}

如果您的意思是form_validation,您可以使用此代替上述内容。

function addDetails() {

    $this->load->library('form_validation');
    $this->form_validation->set_rules('x', 'X', 'required');
    $this->form_validation->set_rules('y', 'Y', 'required');
    $this->form_validation->set_rules('z', 'Z', 'required');

    if ($this->form_validation->run() == true)
    {
        $insert = array(
          'x' => $this->post('x'),
          'y' => $this->post('y'),
          'z' => $this->post('z'),
        );

        if($this->db->insert('categories', $insert))
        {
            return true;

        }
    } 
    return false;  // defaults to false should the db be down

}

这是非常冗长的,有更短的方法可以做到,但我宁愿让你弄清楚。

答案 1 :(得分:-1)

在CodeIgniter中获取帖子值的两种方法

$title = $this->input->post('title');
$no = $this->input->post('no');
$id= $this->input->post('id');



    $this->load->model('model_check');
    $msg = $this->model_check->addDetails($title , $no , $id);
    $this->response($msg);

extract($_POST);

然后直接访问帖子名称

   $this->load->model('model_check');
    $msg = $this->model_check->addDetails($title , $no , $id);
    $this->response($msg);

最好的方法是直接访问模型文件中的帖子值(不在控制器中)

不需要在模型函数中传递POST值。

如果您有更多疑问,请问我