我有一个标准的CI网络应用程序,但我决定使用骨干网来获取混乱的javascript。我有各种各样的控制器方法的序列化表单/ jQuery AJAX请求:authenticate,change_password,register_member,request_new_password等等,并且不太明白REST是如何工作的。我正在使用Phil Sturgeon的REST库来进行CI https://github.com/philsturgeon/codeigniter-restserver
每个骨干模型都应该有不同的api url吗?我应该实际调用控制器方法的是什么?
<?php
require(APPPATH.'/libraries/REST_Controller.php');
class RestApi extends REST_Controller
{
function get()
{
但它只是404s。
我只是不知道如何基于少数HTTP方法将路由替换为我的五十个旧方法。骨干模型的名称是否需要与服务器端的内容匹配?
答案 0 :(得分: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() {
}
}
答案 1 :(得分:1)
模型的url
- 属性应与服务器端“url”匹配,后者返回构成模型属性的JSON。 Backbone.js具有默认功能,即将模型的集合URL与其id属性相匹配。可以通过覆盖urlRoot
函数来放弃集合URL要求,以便在集合之外操作模型。
如果你想独立于id -attribute,你可以覆盖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;
}