Я использую amplify.request, и я хотел бы иметь URL-адреса, подобные CRUD, при отправке данных на сервер и с сервера. Вот пример:
Определение ресурса
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);
});
Использование ресурса
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
);
}
Это отлично работает для create
и read
и `delete, like-so:
make_request('document_delete', {id: 1}, cb)
Однако, для update
, поскольку содержимое передается как JSON, замена URL не выполняется так, как предполагалось.
Есть ли способ использовать замену URL для {id}
в приведенной выше схеме?
Единственная альтернатива, о которой я могу думать, - передать данные на URL-адрес сервера. К сожалению, это несколько проблематично, и я предпочел бы сохранить возможность использования CRUD-подобных URL-адресов и сохранения с форматированными данными JSON, если это возможно.
Мысли будут оценены.