I am using amplify.request, and I would like to have CRUD-like URLs when sending data to and from the server. Here is an example:
Defining the resource
resources = {
"document_create"           : ['/d/crud/',           "POST"],
"document_read"             : ['/d/crud/{id}',       "GET"],
"document_update"           : ['/d/crud/{id}',       "PUT"],
"document_delete"           : ['/d/crud/{id}',       "DELETE"]
};
$.each(resources, function (resource, settings) {
  definition = {
    url     : settings[0],
    type    : settings[1],
    dataType: "json",  // what comes back
    decoder : 'jsend',
    contentType: 'application/json' // what goes there
  };
  amplify.request.define(resource, "ajax", definition);
});
Employing the resource
function make_request(resource, params, success_cb, error_cb) {
 if (this.is_post(resource)) {
   // this.is_post is a test, defined elsewhere, to see if this is a POST request
   params = JSON.stringify(params);
 }
 amplify.request(
   resourceId: resource
   data: params
   success: success_cb
   error: error_cb
 );
}
This works fine for create and read and `delete, like-so:
make_request('document_delete', {id: 1}, cb)
However, for update, since the content is being passed as JSON, the URL substitution does not occur as intended.
Is there a way to take advantage of the URL substitution for {id} in the above scheme?
The only alternative I can think of is to pass the data to the server URL-encoded. Unfortunately this is somewhat problematic, and I would prefer to be able to retain the use of CRUD-like URLs and saving with JSON formatted data, if that is possible.
Thoughts would be appreciated.
 
     
     
    