3

我有一个标准的 CI Web 应用程序,但我决定使用主干来获取混乱的 javascript。我对各种控制器方法有一大堆序列化表单/jQuery AJAX 请求:authenticate、change_password、register_member、request_new_password 等,但不太了解 REST 是如何工作的。我正在为 CI 使用 Phil Sturgeon 的 REST 库https://github.com/philsturgeon/codeigniter-restserver

每个主干模型都应该有不同的 api url 吗?我应该实际调用控制器方法什么?

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

但它只是404s。

我只是不知道如何根据少数 HTTP 方法替换到我的 50 种旧方法的路由。骨干模型的名称是否需要与服务器端的某些内容相匹配?

4

2 回答 2

4

您必须将函数命名为 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() {
    }

}
于 2012-10-16T07:26:06.897 回答
1

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

如果你也想独立于 id -attribute,你应该重写url-attribute/function 以提供你自己的与服务器上的模型匹配的 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; 
}
于 2012-07-02T12:18:33.517 回答