提问者:小点点

主干JS和CodeIgniter REST Server


我有一个标准的CI web应用程序,但我决定使用主干网来获得混乱的javascript。我对各种控制器方法有一大堆序列化表单/jQuery AJAX请求:身份验证、更改密码、注册成员、请求新密码等等。。,我不太明白REST是如何工作的。我正在使用Phil Sturgeon的REST库进行CIhttps://github.com/philsturgeon/codeigniter-restserver

每个主干模型都应该有不同的api url吗?那么,我到底应该如何调用控制器方法呢?

<?php  
    require(APPPATH.'/libraries/REST_Controller.php');  
    class RestApi extends REST_Controller  
    {  
        function get()  
        {  

但它只是404。

我只是不知道如何替换50个基于少数HTTP方法的旧方法的路由。主干模型的名称是否需要在服务器端匹配某些东西?


共2个答案

匿名用户

您必须index_HTTPMETHOD命名您的函数。在您的示例中,它将是:

class RestApi extends REST_Controller {
    // this will handle GET http://.../RestApi
    function index_get() {
    }

    // additionally this will handle POST http://.../RestApi
    function index_post() {
    }
    // and so forth

    // if you want to POST to http://.../RestApi/somefunc
    function somefunc_post() {
    }

}

匿名用户

模型的url-属性应该与服务器端的'url'匹配,后者返回将构成模型属性的JSON。Backbone.js对此具有默认功能,即将模型的集合url与它的id属性相匹配。集合url需求可以通过覆盖urlRoot-函数来放弃,以便在集合之外操作模型。

如果您还想独立于id属性,则应该覆盖url-attribute/函数,以提供与服务器上的模型匹配的自己的url,如下所示:

url: 'path/to/my/model'

url: function() { // Define the url as a function of some model properties
  var path = this.model_root + '/' + 'some_other_url_fragment/' + this.chosen_model_identifier;
  return path; 
}