我正在使用amplify.request,并且我希望在向服务器发送数据和从服务器发送数据时使用类似 CRUD 的 URL。这是一个例子:
定义资源
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
andread
和 `delete,就像这样:
make_request('document_delete', {id: 1}, cb)
但是,对于update
,由于内容是作为 JSON 传递的,因此 URL 替换不会按预期进行。
有没有办法利用{id}
上述方案中的 URL 替换?
我能想到的唯一选择是将数据传递给以 URL 编码的服务器。不幸的是,这有点问题,如果可能的话,我希望能够保留使用类似 CRUD 的 URL 并使用 JSON 格式的数据进行保存。
想法将不胜感激。