3 Stimmen

Backbone JS und CodeIgniter REST Server

Ich habe eine Standard-CI-Web-App, aber ich habe beschlossen, die chaotische Javascript in Ordnung mit Backbone zu bekommen. Ich hatte einen ganzen Haufen serialisierte Formulare/jQuery AJAX-Anfragen an verschiedene Controller-Methoden: authenticate, change_password, register_member, request_new_password, etc.., und nicht ganz verstehen, wie REST stattdessen funktioniert. Ich verwende die REST-Bibliothek von Phil Sturgeon für CI https://github.com/philsturgeon/codeigniter-restserver

Sollte jedes Backbone-Modell eine andere Api-URL haben? Und wie soll ich die Controller-Methoden eigentlich aufrufen?

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

Aber es gibt nur 404.

Ich verstehe nur nicht, wie ich die Weiterleitung zu fünfzig meiner alten Methoden auf der Grundlage einer Handvoll HTTP-Methoden ersetzen kann. Muss der Name des Backbone-Modells mit etwas auf der Serverseite übereinstimmen?

4voto

Kinjal Dixit Punkte 7371

Sie müssen Ihre Funktionen index_HTTPMETHOD nennen. In Ihrem Beispiel wäre das so:

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() {
    }

}

1voto

jakee Punkte 18408

Die url -Attribut des Modells sollte mit der serverseitigen "url" übereinstimmen, die das JSON zurückliefert, aus dem die Attribute des Modells bestehen werden. Backbone.js hat hierfür eine Standardfunktionalität, die darin besteht, die Sammlungsurl des Modells mit seinem id-Attribut abzugleichen. Auf die Anforderung der Sammlungsurl kann verzichtet werden indem die urlRoot -Funktion, um Modelle außerhalb von Sammlungen zu betreiben.

Wenn Sie auch vom id-Attribut unabhängig sein wollen, sollten Sie die url -Attribut/Funktion, um Ihre eigene URL bereitzustellen, die mit dem Modell auf dem Server übereinstimmt, etwa so:

url: 'path/to/my/model'

o

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; 
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X