backbone.js Codeigniter REST风格的API未返回JSON

omvjsjqw  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(165)

我有一个应用程序,我使用Codeigniter作为后端,Backbone作为前端。现在我使用https://github.com/philsturgeon/codeigniter-restserver中的RESTful API。我想获取RSS提要,所以我在application->models中创建了一个RSS-model.php:

<?php
    class Rss_model extends CI_Model
    {
        var $table_name = 'artist_news';
        var $primary_key    = 'news_id';

    function get_all_rss_feeds()
    {
        $this->db->select($this->primary_key);
        $this->db->from($this->table_name);
        return $this->db->get();
    }

   }
?>

然后在application->controllers中创建了文件夹api,在其中创建了文件rss.php:

<?php

require(APPPATH.'libraries/REST_Controller.php');

class rss extends REST_Controller{

public function get_all_rss_feeds_get()  
{ 
    $this->load->database();
    $this->load->model('rss_model');

    $data = $this->rss_model->get_all_rss_feeds();

    if($data) {
        $this->response($data, 200); 
    } else {
        $this->response(array('error' => 'Couldn\'t find any news!'), 404);
    }
 }
}

?>

到目前为止一切都很好,它返回了一个带有大量rss-feed的文本数组,但不是JSON,这是我的前端所需要的。
有人知道这是什么问题吗?
提前感谢...

[编辑]

我的 Backbone.js 代码如下所示:

function (App, Backbone) {

    var Rss = App.module();

    Rss.View = Backbone.View.extend({
        template: 'rss',
        initialize: function() {
            this.listenTo(this.collection, 'all', this.render)
        },
        serialize: function() {
            return this.collection ? this.collection.toJSON() : [];
        }
    });

    Rss.RssCollection = Backbone.Collection.extend({
        url: function() {
            return '/myproject/index.php/api/rss/get_all_rss_feeds/';
        }
      });

    return Rss;
}
dnph8jn4

dnph8jn41#

转到config/rest.php文件并找到以下行:

$config['rest_default_format'] = 'xml';

将其更改为:

$config['rest_default_format'] = 'json';
nxagd54h

nxagd54h2#

我想你错过了返回模型中的结果,请检查以下内容

function get_all_rss_feeds()
{
    $this->db->select($this->primary_key);
    $this->db->from($this->table_name);
    return $this->db->get()->result();
}
prdp8dxp

prdp8dxp3#

如果您使用Phil Sturgeon REST库,则需要在URL中附加格式类型。例如:

http://example.com/books.json
http://example.com/books?format=json

如果你想用另一种格式,比如XML,你只需要在URI中传递新的格式,而不需要在代码中做任何改变。例如:

http://example.com/books.xml
http://example.com/books?format=xml

进一步阅读:
内容类型区段-https://github.com/philsturgeon/codeigniter-restserver

相关问题