2014-12-05 2 views
3

Я прочитал следующие темы/учебники:Сервер API Codeigniter RESTful - ошибка XML?

  1. Codeigniter RESTful API Server
  2. http://code.tutsplus.com/tutorials/working-with-restful-services-in-codeigniter--net-8814
  3. https://github.com/chriskacerguis/codeigniter-restserver

И я до сих пор не могу понять, почему я с проблемами маршрутизации и XML проблемы. Мой контроллер вебсервис находится в папке controllers/api/webservice.php

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

require APPPATH.'/libraries/RESTful/REST_Controller.php'; 

class webservice extends REST_Controller{ 

    function get() { 
     $data = array(); 
     $data['name'] = "TESTNAME"; 
     $this->response($data); 
    } 
} 

В учебниках нет необходимости добавлять маршруты, и для того, чтобы получить ошибку XML страницы мне нужно добавить следующий маршрут или не будет работа:

$route['api/webservice/get'] = 'api/webservice/get'; 

Моя структура папок CodeIgniter:

> application 
    > config 
     rest.php (did not change anything from the GitHub download) 
    > controllers 
     > api 
     webservice.php 
     key.php 
    > libraries 
     > RESTful 
     REST_Controller.php (changed line 206 to: $this->load->library('RESTful/format');) 
     format.php 

Из учебника, следующая ссылка работает без маршрутов:

http://localhost/testRestful/index.php/api/example/users 

Шахта работает только с одним маршрутом

http://localhost/myproject/index.php/api/webservice/get 

И я получаю следующее сообщение об ошибке: enter image description here Это не говорит, что-нибудь еще. Я не могу понять, какой файл является ошибкой.

+0

Это ваш полный код контроллера? – Craig

+0

@Craig Да, это так. Я просто тестирую, поэтому у меня нет ничего другого в моем контроллере. – Linesofcode

+0

Я только спрашиваю, потому что я уверен, что раньше у нас была эта проблема, которая была устранена удаленным нежелательным пробелом. – Craig

ответ

1

вы не можете написать функцию получения, если используете REST_Controller. укажите это имя функции test_get.

class webservice extends REST_Controller{ 
function test_get() { 
    $data = array(); 
    $data['name'] = "TESTNAME"; 
    $this->response($data); 
} 
} 

Теперь вы можете получить доступ к странице по этой ссылке

http://localhost/myproject/index.php/api/webservice/test 

_GET и _POST добавляют конец функции, чтобы обнаружить либо это получить запрос или сообщение requerst.

+0

Вы абсолютно правы, но как насчет маршрутов, мне нужно их создать? Потому что в примерах они не создаются. – Linesofcode

+0

Btw, для работы XML (http: //localhost/myproject/index.php/api/webservice/test? Format = xml) строка 'ob_get_clean();' должна быть добавлена ​​в Format.php 'метод построения' – Linesofcode

+0

Я думаю, что если вы используете правильный путь, вам не нужны маршруты. Вам просто нужно добавить _get или _post для каждой функции в зависимости от запроса. –

Смежные вопросы