如何在Codeigniter中创建API?

时间:2017-07-18 11:07:09

标签: javascript php jquery codeigniter

我想在Codeigniter中创建一个API,它将获取cart_list,cart_list将具有纬度,商店的经度,我想检查帖子参数之间的距离(纬度,经度)并返回距离。

现在,我正在尝试在Codeigniter的控制器文件夹中创建一个控制器并编写一个函数来获取cart_list但我无法获取列表,我只是尝试返回'成功',因为响应此api但我我正在回复

{
    "status": false,
    "error": "Unknown method."
} 

distance_calculator

<?php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require APPPATH.'/libraries/api/REST_Controller.php';


class distance_calculator extends REST_Controller
{
    function distance_calculator()
    {
        parent::__construct();
        $this->load->model('mdl_cart_web');
    }


    function cart_list($offset = 0)
    {
        $limit = '';

        $data = array();

        $s_data = $_POST;

        $carts = $this->mdl_cart_web->get_cart_list($limit,$offset,$s_data)->result_array();
        $totalRows = $this->mdl_cart_web->get_total_cart_product($s_data)->num_rows();

      //  $data = $this->mdl_common->pagination_data('cart/get_cart_list/',$totalRows,$limit,'show_data');
        $data['carts'] = $carts;
        $data['total_cart'] = $totalRows;

        $this->response('success', 200);
    }
}

?>

我还在路线文件

中声明了路线

路由

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$route['default_controller'] = "home1";

$route['cart_list'] = 'distance_controller/cart_list';

我将此功能称为

http://test.pricewhirl.com/index.php/distance_calculator/cart_list

使用GET方法,作为回应我得到错误未知方法。

我是网络开发的初学者。请帮帮忙,谢谢。

4 个答案:

答案 0 :(得分:1)

您必须在方法名称中定义请求类型:

function cart_list_get() {
    ....
}

来自doc:

  

当您的控制器从REST_Controller扩展时,方法名称   将附加用于访问请求的HTTP方法。如果   例如,你会调用/ books来对/ books进行HTTP GET调用   一本书#index_get()方法。

答案 1 :(得分:1)

如果您使用的是Rest Controller,则必须使用Postfix _post进行POST方法,将_get用于GET方法,如

public function abc_post()

答案 2 :(得分:1)

始终在方法代码中添加方法名称作为post fix。 就像你用post方法编写函数一样 - &gt; cart_list_post() 如果你用get方法编写了一个函数 - &gt; cart_list_get()

答案 3 :(得分:0)

我知道这不是一个答案,但是如果你需要文档,请查看这篇文章,了解如何用CI制作api

https://www.cloudways.com/blog/rest-api-in-codeigniter/